1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package store
- import (
- "context"
- )
- type Activity struct {
- ID int
- // Standard fields
- CreatorID int
- CreatedTs int64
- // Domain specific fields
- Type string
- Level string
- Payload string
- }
- func (s *Store) CreateActivity(ctx context.Context, create *Activity) (*Activity, error) {
- tx, err := s.db.BeginTx(ctx, nil)
- if err != nil {
- return nil, err
- }
- defer tx.Rollback()
- query := `
- INSERT INTO activity (
- creator_id,
- type,
- level,
- payload
- )
- VALUES (?, ?, ?, ?)
- RETURNING id, created_ts
- `
- if err := tx.QueryRowContext(ctx, query, create.CreatorID, create.Type, create.Level, create.Payload).Scan(
- &create.ID,
- &create.CreatedTs,
- ); err != nil {
- return nil, err
- }
- if err := tx.Commit(); err != nil {
- return nil, err
- }
- activity := create
- return activity, nil
- }
|