get and delete methods
This commit is contained in:
parent
25d11b31da
commit
bc3eee6434
5 changed files with 154 additions and 6 deletions
|
|
@ -6,11 +6,19 @@ import (
|
|||
"fmt"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Repository interface {
|
||||
// createMerch creates new merch record and inserts extra data if given
|
||||
createMerch(ctx context.Context, merch *Merch, extra []ExtraData) error
|
||||
|
||||
// getMany returns list of only main merch record, without origins extra data
|
||||
getMany(ctx context.Context, userId string) ([]merchDTO, error)
|
||||
|
||||
// deleteOneMerchRecord sets deleted_at in merch + extra tables
|
||||
deleteOneMerchRecord(ctx context.Context, userId, merchUuid string, delTime time.Time) error
|
||||
|
||||
Origins
|
||||
}
|
||||
|
||||
|
|
@ -126,3 +134,47 @@ func (r *repo) createMerch(ctx context.Context, merch *Merch, extra []ExtraData)
|
|||
|
||||
return tx.Commit(ctx)
|
||||
}
|
||||
|
||||
func (r *repo) getMany(ctx context.Context, userId string) ([]merchDTO, error) {
|
||||
q := `SELECT created_at, updated_at, merch_uuid, name FROM merch WHERE deleted_at IS NULL AND user_id = $1`
|
||||
|
||||
rows, err := r.db.Query(ctx, q, userId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var result []merchDTO
|
||||
for rows.Next() {
|
||||
var m merchDTO
|
||||
if err = rows.Scan(&m.CreatedAt, &m.UpdatedAt, &m.MerchUuid, &m.Name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, m)
|
||||
}
|
||||
if err = rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r *repo) deleteOneMerchRecord(ctx context.Context, userId, merchUuid string, delTime time.Time) error {
|
||||
tx, err := r.db.Begin(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var merch_id int64
|
||||
qMerch := `UPDATE merch SET deleted_at = $1 WHERE merch_uuid = $2 AND user_id = $3 RETURNING id`
|
||||
if err = tx.QueryRow(ctx, qMerch, delTime, merchUuid, userId).Scan(&merch_id); err != nil {
|
||||
tx.Rollback(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
if merch_id != 0 {
|
||||
qExtra := `UPDATE merch_extra_data SET deleted_at = $1 WHERE merch_id = $2`
|
||||
_, err = tx.Exec(ctx, qExtra, delTime, merch_id)
|
||||
}
|
||||
|
||||
return tx.Commit(ctx)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue