package donat import ( "context" "donat-widget/internal/model" "donat-widget/internal/model/sql" "github.com/georgysavva/scany/v2/pgxscan" "github.com/jackc/pgx/v5" "log/slog" ) func New(db model.Db) *RepoDonat { return &RepoDonat{ db: db, } } type RepoDonat struct { db model.Db } func (repoDonat *RepoDonat) CreateDonat( ctx context.Context, widgetID model.WidgetID, orderID model.OrderID, targetID model.TargetID, amount model.DonatAmount, text string, donatUser string, ) error { args := pgx.NamedArgs{ "widget_id": widgetID, "order_id": orderID, "target_id": targetID, "text": text, "amount": amount, "donat_user": donatUser, } _, err := repoDonat.db.Query(ctx, sql.CreateDonat, args) if err != nil { slog.Error("repoDonat.db.Query: " + err.Error()) return err } return nil } func (repoDonat *RepoDonat) GetDonat( ctx context.Context, widgetID model.WidgetID, ) ([]*model.Donat, error) { args := pgx.NamedArgs{ "widget_id": widgetID, "paid": true, "view": false, } rows, err := repoDonat.db.Query(ctx, sql.GetDonat, args) if err != nil { slog.Error("repoDonat.db.Query: " + err.Error()) return nil, err } var donats []*model.Donat err = pgxscan.ScanAll(&donats, rows) if err != nil { slog.Error("repoMedia.pgxscan.ScanAll: " + err.Error()) return nil, err } return donats, nil } func (repoDonat *RepoDonat) MarkDonatView( ctx context.Context, donatID model.DonatID, ) error { args := pgx.NamedArgs{ "id": donatID, "view": true, } _, err := repoDonat.db.Query(ctx, sql.MarkDonatView, args) if err != nil { slog.Error("repoDonat.db.Query: " + err.Error()) return err } return nil } func (repoDonat *RepoDonat) MarkDonatPaid( ctx context.Context, orderID model.OrderID, ) error { args := pgx.NamedArgs{ "order_id": orderID, "paid": true, } _, err := repoDonat.db.Query(ctx, sql.MarkDonatPaid, args) if err != nil { slog.Error("repoDonat.db.Query: " + err.Error()) return err } return nil }