package db import ( "context" "lmika.dev/lmika/hugo-cms/gen/sqlc/dbq" "lmika.dev/lmika/hugo-cms/models" "lmika.dev/pkg/modash/moslice" ) func (db *DB) InsertPublishTarget(ctx context.Context, target *models.PublishTarget) error { id, err := db.q.InsertPublishTarget(ctx, dbq.InsertPublishTargetParams{ SiteID: target.SiteID, Role: dbq.TargetRole(target.Role), TargetType: dbq.TargetType(target.Type), Url: target.URL, TargetRef: target.TargetRef, }) if err != nil { return err } target.ID = id return nil } func (db *DB) GetPublishTargets(ctx context.Context, siteID int64) ([]models.PublishTarget, error) { res, err := db.q.ListTargetsOfSite(ctx, siteID) if err != nil { return nil, err } return moslice.Map(res, dbTargetToTarget), nil } func (db *DB) GetPublishTargetBySiteRole(ctx context.Context, siteID int64, role models.TargetRole) (models.PublishTarget, error) { target, err := db.q.GetTargetOfSiteRole(ctx, dbq.GetTargetOfSiteRoleParams{ SiteID: siteID, Role: dbq.TargetRole(role), }) if err != nil { return models.PublishTarget{}, err } return dbTargetToTarget(target), nil } func dbTargetToTarget(m dbq.PublishTarget) models.PublishTarget { return models.PublishTarget{ ID: m.ID, SiteID: m.SiteID, Role: models.TargetRole(m.Role), Type: models.TargetType(m.TargetType), URL: m.Url, TargetRef: m.TargetRef, } }