fix: data conflict handler

This commit is contained in:
Steven
2023-12-10 10:07:26 +08:00
parent d275713aff
commit 0127e08a28
5 changed files with 14 additions and 30 deletions

View File

@ -11,24 +11,14 @@ import (
)
func (d *DB) UpsertMemoOrganizer(ctx context.Context, upsert *store.MemoOrganizer) (*store.MemoOrganizer, error) {
pinnedValue := 0
pinned := 0
if upsert.Pinned {
pinnedValue = 1
pinned = 1
}
qb := squirrel.Insert("memo_organizer").
Columns("memo_id", "user_id", "pinned").
Values(upsert.MemoID, upsert.UserID, pinnedValue).
PlaceholderFormat(squirrel.Dollar)
stmt, args, err := qb.ToSql()
if err != nil {
stmt := "INSERT INTO memo_organizer (memo_id, user_id, pinned) VALUES ($1, $2, $3) ON CONFLICT (memo_id, user_id) DO UPDATE SET pinned = $4"
if _, err := d.db.ExecContext(ctx, stmt, upsert.MemoID, upsert.UserID, pinned, pinned); err != nil {
return nil, err
}
if _, err = d.db.ExecContext(ctx, stmt, args...); err != nil {
return nil, err
}
return upsert, nil
}