Added options for setting the site targets
This commit is contained in:
parent
a31c8e48ce
commit
cb45f6aa53
|
@ -94,3 +94,21 @@ func (q *Queries) ListTargetsOfSite(ctx context.Context, siteID int64) ([]Publis
|
|||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const updatePublishTarget = `-- name: UpdatePublishTarget :exec
|
||||
UPDATE publish_targets SET
|
||||
url = $2,
|
||||
target_ref = $3
|
||||
WHERE id = $1
|
||||
`
|
||||
|
||||
type UpdatePublishTargetParams struct {
|
||||
ID int64
|
||||
Url string
|
||||
TargetRef string
|
||||
}
|
||||
|
||||
func (q *Queries) UpdatePublishTarget(ctx context.Context, arg UpdatePublishTargetParams) error {
|
||||
_, err := q.db.Exec(ctx, updatePublishTarget, arg.ID, arg.Url, arg.TargetRef)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -23,6 +23,14 @@ func (db *DB) InsertPublishTarget(ctx context.Context, target *models.PublishTar
|
|||
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 {
|
||||
|
|
|
@ -3,6 +3,7 @@ package sites
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"lmika.dev/lmika/hugo-cms/config"
|
||||
"lmika.dev/lmika/hugo-cms/models"
|
||||
"lmika.dev/lmika/hugo-cms/providers/db"
|
||||
|
@ -63,43 +64,55 @@ func (s *Service) CreateSite(ctx context.Context, user models.User, name string)
|
|||
return models.Site{}, err
|
||||
}
|
||||
|
||||
// TEMP
|
||||
/*
|
||||
if err := s.db.InsertPublishTarget(ctx, &models.PublishTarget{
|
||||
SiteID: newSite.ID,
|
||||
Role: models.TargetRoleProduction,
|
||||
Type: models.TargetTypeNetlify,
|
||||
URL: "https://meek-meringue-060cfc.netlify.app/",
|
||||
TargetRef: "e628dc6e-e6e1-45a9-847a-982adef940a8",
|
||||
}); err != nil {
|
||||
return models.Site{}, err
|
||||
}
|
||||
*/
|
||||
|
||||
return newSite, s.jobs.Queue(ctx, s.sb.CreateNewSite(newSite))
|
||||
}
|
||||
|
||||
func (s *Service) SaveSettings(ctx context.Context, site models.Site, newSettings NewSettings) error {
|
||||
_, ok := s.themes.Lookup(newSettings.Theme)
|
||||
_, ok := s.themes.Lookup(newSettings.SiteTheme)
|
||||
if !ok {
|
||||
return errors.New("theme not found")
|
||||
}
|
||||
|
||||
newSite := site
|
||||
newSite.Title = newSettings.Title
|
||||
newSite.Title = newSettings.SiteTitle
|
||||
newSite.Name = normaliseName(newSite.Title)
|
||||
newSite.Theme = newSettings.Theme
|
||||
newSite.Theme = newSettings.SiteTheme
|
||||
|
||||
if err := s.db.UpdateSite(ctx, newSite); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pubTarget, err := s.db.GetPublishTargetBySiteRole(ctx, newSite.ID, models.TargetRoleProduction)
|
||||
if err == nil {
|
||||
pubTarget.TargetRef = newSettings.TargetRef
|
||||
pubTarget.URL = newSettings.TargetURL
|
||||
if err := s.db.UpdatePublishTarget(ctx, pubTarget); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if errors.Is(err, pgx.ErrNoRows) {
|
||||
pubTarget = models.PublishTarget{
|
||||
SiteID: newSite.ID,
|
||||
Role: models.TargetRoleProduction,
|
||||
Type: models.TargetTypeNetlify,
|
||||
URL: newSettings.TargetURL,
|
||||
TargetRef: newSettings.TargetRef,
|
||||
}
|
||||
if err := s.db.InsertPublishTarget(ctx, &pubTarget); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.jobs.Queue(ctx, s.sb.RebuildSite(site, newSite))
|
||||
}
|
||||
|
||||
type NewSettings struct {
|
||||
Title string `form:"title"`
|
||||
Theme string `form:"theme"`
|
||||
SiteTitle string `form:"site_title"`
|
||||
SiteTheme string `form:"site_theme"`
|
||||
|
||||
TargetURL string `form:"target_url"`
|
||||
TargetRef string `form:"target_ref"`
|
||||
}
|
||||
|
||||
func (s *Service) Rebuild(ctx context.Context, site models.Site) error {
|
||||
|
|
|
@ -12,4 +12,10 @@ INSERT INTO publish_targets (
|
|||
url,
|
||||
target_ref
|
||||
) VALUES ($1, $2, $3, $4, $5)
|
||||
RETURNING id;
|
||||
RETURNING id;
|
||||
|
||||
-- name: UpdatePublishTarget :exec
|
||||
UPDATE publish_targets SET
|
||||
url = $2,
|
||||
target_ref = $3
|
||||
WHERE id = $1;
|
|
@ -1,11 +1,11 @@
|
|||
<form method="POST" action="/sites/{{.site.ID}}/settings">
|
||||
<p>
|
||||
<label>Title</label>
|
||||
<input type="text" name="title" value="{{.site.Title}}" />
|
||||
<input type="text" name="site_title" value="{{.site.Title}}" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Theme</label>
|
||||
<select name="theme">
|
||||
<select name="site_theme">
|
||||
{{range .themes}}
|
||||
{{if eq .ID $.site.Theme}}
|
||||
<option value="{{.ID}}" selected>{{.Name}}</option>
|
||||
|
@ -15,6 +15,14 @@
|
|||
{{end}}
|
||||
</select>
|
||||
</p>
|
||||
<p>
|
||||
<label>URL</label>
|
||||
<input type="text" name="target_url" value="{{.target.URL}}" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Netlify Site ID</label>
|
||||
<input type="text" name="target_ref" value="{{.target.TargetRef}}" />
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="Save" />
|
||||
</p>
|
||||
|
|
Loading…
Reference in a new issue