feat(repo): enhance MoveToArchive to compute new IDs for archived episodes

This commit is contained in:
Nik Afiq 2025-12-11 21:57:17 +09:00
parent e34d2bf8f1
commit 2063dffc09

View File

@ -218,14 +218,19 @@ func (r *pgxEpisodeRepo) MoveToArchive(ctx context.Context, ids []int64) (episod
} }
if !inserted { if !inserted {
var newID int64
if err := tx.QueryRow(ctx, `SELECT COALESCE(MAX(id), 0) + 1 FROM current_archive`).Scan(&newID); err != nil {
log.Printf("archive compute new id failed for original id=%d: %v", item.id, err)
return res, err
}
if err := tx.QueryRow(ctx, ` if err := tx.QueryRow(ctx, `
INSERT INTO current_archive ( INSERT INTO current_archive (
id, ep_num, ep_title, season_name, start_time, playback_length, current_ep, date_created id, ep_num, ep_title, season_name, start_time, playback_length, current_ep, date_created
) )
VALUES (nextval(pg_get_serial_sequence('current','id')), $1, $2, $3, $4, $5, $6, $7) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
RETURNING id RETURNING id
`, item.epNum, item.epTitle, item.seasonName, item.startTime, item.playback, item.currentEp, item.dateCreated).Scan(&archivedID); err != nil { `, newID, item.epNum, item.epTitle, item.seasonName, item.startTime, item.playback, item.currentEp, item.dateCreated).Scan(&archivedID); err != nil {
log.Printf("archive fallback insert failed for original id=%d: %v", item.id, err) log.Printf("archive fallback insert failed for original id=%d using new id=%d: %v", item.id, newID, err)
return res, err return res, err
} }
} }