activity.go 814 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package store
  2. import (
  3. "context"
  4. )
  5. type Activity struct {
  6. ID int
  7. // Standard fields
  8. CreatorID int
  9. CreatedTs int64
  10. // Domain specific fields
  11. Type string
  12. Level string
  13. Payload string
  14. }
  15. func (s *Store) CreateActivity(ctx context.Context, create *Activity) (*Activity, error) {
  16. tx, err := s.db.BeginTx(ctx, nil)
  17. if err != nil {
  18. return nil, err
  19. }
  20. defer tx.Rollback()
  21. query := `
  22. INSERT INTO activity (
  23. creator_id,
  24. type,
  25. level,
  26. payload
  27. )
  28. VALUES (?, ?, ?, ?)
  29. RETURNING id, created_ts
  30. `
  31. if err := tx.QueryRowContext(ctx, query, create.CreatorID, create.Type, create.Level, create.Payload).Scan(
  32. &create.ID,
  33. &create.CreatedTs,
  34. ); err != nil {
  35. return nil, err
  36. }
  37. if err := tx.Commit(); err != nil {
  38. return nil, err
  39. }
  40. activity := create
  41. return activity, nil
  42. }