65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
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) UpdatePublishTarget(ctx context.Context, target models.PublishTarget) error {
|
|
return db.q.UpdatePublishTarget(ctx, dbq.UpdatePublishTargetParams{
|
|
ID: target.ID,
|
|
Url: target.URL,
|
|
TargetRef: target.TargetRef,
|
|
})
|
|
}
|
|
|
|
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,
|
|
}
|
|
}
|