| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package repository
- import (
- "context"
- "fmt"
- "github.com/jackc/pgx/v5/pgxpool"
- "gogs.fxtmmsk.ru/foxtime/photoplaces/backend/internal/models"
- )
- type ModerationLogRepo struct {
- pool *pgxpool.Pool
- }
- func NewModerationLogRepo(pool *pgxpool.Pool) *ModerationLogRepo {
- return &ModerationLogRepo{pool: pool}
- }
- func (r *ModerationLogRepo) Create(ctx context.Context, entry *models.ModerationLog) error {
- err := r.pool.QueryRow(ctx,
- `INSERT INTO moderation_log (moderator_id, target_type, target_id, action, old_status, new_status, comment)
- VALUES ($1, $2, $3, $4, $5, $6, $7)
- RETURNING id, created_at`,
- entry.ModeratorID, entry.TargetType, entry.TargetID,
- entry.Action, entry.OldStatus, entry.NewStatus, entry.Comment,
- ).Scan(&entry.ID, &entry.CreatedAt)
- if err != nil {
- return fmt.Errorf("create moderation log: %w", err)
- }
- return nil
- }
- func (r *ModerationLogRepo) ListByTarget(ctx context.Context, targetType, targetID string) ([]*models.ModerationLog, error) {
- rows, err := r.pool.Query(ctx,
- `SELECT id, moderator_id, target_type, target_id, action,
- old_status, new_status, comment, created_at
- FROM moderation_log
- WHERE target_type = $1 AND target_id = $2
- ORDER BY created_at DESC`, targetType, targetID)
- if err != nil {
- return nil, fmt.Errorf("list moderation log: %w", err)
- }
- defer rows.Close()
- var entries []*models.ModerationLog
- for rows.Next() {
- var e models.ModerationLog
- if err := rows.Scan(&e.ID, &e.ModeratorID, &e.TargetType, &e.TargetID, &e.Action,
- &e.OldStatus, &e.NewStatus, &e.Comment, &e.CreatedAt); err != nil {
- return nil, err
- }
- entries = append(entries, &e)
- }
- return entries, nil
- }
|