get single merch
This commit is contained in:
parent
ec4fe5151e
commit
7922c00238
4 changed files with 117 additions and 7 deletions
|
|
@ -13,6 +13,9 @@ type MerchRepo interface {
|
|||
// createMerch creates new merch record and inserts extra data if given
|
||||
createMerch(ctx context.Context, merch *Merch, extra []ExtraData) error
|
||||
|
||||
getSingleMerch(ctx context.Context, userId int64, merchUuid string) (*Merch, error)
|
||||
getSingleMerchExtraData(ctx context.Context, merchId int64) ([]originLink, error)
|
||||
|
||||
// getMany returns list of only main merch record, without origins extra data
|
||||
getMany(ctx context.Context, userId int64) ([]getMerchInternal, error)
|
||||
|
||||
|
|
@ -75,6 +78,50 @@ func (r *repo) createMerch(ctx context.Context, merch *Merch, extra []ExtraData)
|
|||
return tx.Commit(ctx)
|
||||
}
|
||||
|
||||
func (r *repo) getSingleMerch(ctx context.Context, userId int64, merchUuid string) (*Merch, error) {
|
||||
q := `SELECT id, name FROM merch WHERE merch_uuid = $1 AND user_id = $2 AND deleted_at IS NULL`
|
||||
|
||||
var m Merch
|
||||
|
||||
if err := r.db.QueryRow(ctx, q, merchUuid, userId).Scan(&m.Id, &m.Name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &m, nil
|
||||
}
|
||||
|
||||
func (r *repo) getSingleMerchExtraData(ctx context.Context, merchId int64) ([]originLink, error) {
|
||||
q := `
|
||||
SELECT mo.name, med.url
|
||||
FROM merch_extra_data AS med
|
||||
JOIN merch_origins AS mo ON mo.id = med.origin_id
|
||||
WHERE med.merch_id = $1
|
||||
AND med.deleted_at IS NULL
|
||||
AND mo.deleted_at IS NULL
|
||||
`
|
||||
|
||||
rows, err := r.db.Query(ctx, q, merchId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result []originLink
|
||||
for rows.Next() {
|
||||
var o originLink
|
||||
if err = rows.Scan(&o.Origin, &o.Link); err != nil {
|
||||
rows.Close()
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, o)
|
||||
}
|
||||
|
||||
rows.Close()
|
||||
if err = rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
|
||||
}
|
||||
|
||||
func (r *repo) getMany(ctx context.Context, userId int64) ([]getMerchInternal, error) {
|
||||
q := `SELECT id, merch_uuid, name FROM merch WHERE deleted_at IS NULL AND user_id = $1`
|
||||
|
||||
|
|
@ -82,16 +129,18 @@ func (r *repo) getMany(ctx context.Context, userId int64) ([]getMerchInternal, e
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var result []getMerchInternal
|
||||
for rows.Next() {
|
||||
var m getMerchInternal
|
||||
if err = rows.Scan(&m.Id, &m.MerchUuid, &m.Name); err != nil {
|
||||
rows.Close()
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, m)
|
||||
}
|
||||
|
||||
rows.Close()
|
||||
if err = rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue