Added sub commands for doing admin stuff
This commit is contained in:
parent
329de2f953
commit
4a6b79db17
18 changed files with 531 additions and 185 deletions
|
|
@ -21,6 +21,7 @@ type Post struct {
|
|||
type PublishTarget struct {
|
||||
ID int64
|
||||
SiteID int64
|
||||
Guid string
|
||||
TargetType string
|
||||
Enabled int64
|
||||
BaseUrl string
|
||||
|
|
|
|||
|
|
@ -12,17 +12,19 @@ import (
|
|||
const insertPublishTarget = `-- name: InsertPublishTarget :one
|
||||
INSERT INTO publish_targets (
|
||||
site_id,
|
||||
guid,
|
||||
target_type,
|
||||
enabled,
|
||||
base_url,
|
||||
target_ref,
|
||||
target_key
|
||||
) VALUES (?, ?, ?, ?, ?, ?)
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
RETURNING id
|
||||
`
|
||||
|
||||
type InsertPublishTargetParams struct {
|
||||
SiteID int64
|
||||
Guid string
|
||||
TargetType string
|
||||
Enabled int64
|
||||
BaseUrl string
|
||||
|
|
@ -33,6 +35,7 @@ type InsertPublishTargetParams struct {
|
|||
func (q *Queries) InsertPublishTarget(ctx context.Context, arg InsertPublishTargetParams) (int64, error) {
|
||||
row := q.db.QueryRowContext(ctx, insertPublishTarget,
|
||||
arg.SiteID,
|
||||
arg.Guid,
|
||||
arg.TargetType,
|
||||
arg.Enabled,
|
||||
arg.BaseUrl,
|
||||
|
|
@ -45,7 +48,7 @@ func (q *Queries) InsertPublishTarget(ctx context.Context, arg InsertPublishTarg
|
|||
}
|
||||
|
||||
const selectPublishTargetsOfSite = `-- name: SelectPublishTargetsOfSite :many
|
||||
SELECT id, site_id, target_type, enabled, base_url, target_ref, target_key FROM publish_targets WHERE site_id = ?
|
||||
SELECT id, site_id, guid, target_type, enabled, base_url, target_ref, target_key FROM publish_targets WHERE site_id = ?
|
||||
`
|
||||
|
||||
func (q *Queries) SelectPublishTargetsOfSite(ctx context.Context, siteID int64) ([]PublishTarget, error) {
|
||||
|
|
@ -60,6 +63,7 @@ func (q *Queries) SelectPublishTargetsOfSite(ctx context.Context, siteID int64)
|
|||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.SiteID,
|
||||
&i.Guid,
|
||||
&i.TargetType,
|
||||
&i.Enabled,
|
||||
&i.BaseUrl,
|
||||
|
|
|
|||
|
|
@ -53,6 +53,68 @@ func (q *Queries) InsertSite(ctx context.Context, arg InsertSiteParams) (int64,
|
|||
return id, err
|
||||
}
|
||||
|
||||
const selectAllSitesWithOwners = `-- name: SelectAllSitesWithOwners :many
|
||||
SELECT s.id, s.guid, s.title, s.owner_id, u.username
|
||||
FROM sites s
|
||||
JOIN users u ON s.owner_id = u.id
|
||||
ORDER BY s.title ASC
|
||||
`
|
||||
|
||||
type SelectAllSitesWithOwnersRow struct {
|
||||
ID int64
|
||||
Guid string
|
||||
Title string
|
||||
OwnerID int64
|
||||
Username string
|
||||
}
|
||||
|
||||
func (q *Queries) SelectAllSitesWithOwners(ctx context.Context) ([]SelectAllSitesWithOwnersRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, selectAllSitesWithOwners)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []SelectAllSitesWithOwnersRow
|
||||
for rows.Next() {
|
||||
var i SelectAllSitesWithOwnersRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Guid,
|
||||
&i.Title,
|
||||
&i.OwnerID,
|
||||
&i.Username,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const selectSiteByGUID = `-- name: SelectSiteByGUID :one
|
||||
SELECT id, owner_id, guid, title, tagline, created_at FROM sites WHERE guid = ?
|
||||
`
|
||||
|
||||
func (q *Queries) SelectSiteByGUID(ctx context.Context, guid string) (Site, error) {
|
||||
row := q.db.QueryRowContext(ctx, selectSiteByGUID, guid)
|
||||
var i Site
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.OwnerID,
|
||||
&i.Guid,
|
||||
&i.Title,
|
||||
&i.Tagline,
|
||||
&i.CreatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const selectSiteByID = `-- name: SelectSiteByID :one
|
||||
SELECT id, owner_id, guid, title, tagline, created_at FROM sites WHERE id = ?
|
||||
`
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ func TestProvider_Posts(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
assert.NotZero(t, post.ID)
|
||||
|
||||
posts, err := p.SelectPostsOfSite(ctx, site.ID)
|
||||
posts, err := p.SelectPostsOfSite(ctx, site.ID, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts, 1)
|
||||
assert.Equal(t, post.ID, posts[0].ID)
|
||||
|
|
@ -205,7 +205,7 @@ func TestProvider_Posts(t *testing.T) {
|
|||
require.NoError(t, p.SavePost(ctx, post1))
|
||||
require.NoError(t, p.SavePost(ctx, post2))
|
||||
|
||||
posts, err := p.SelectPostsOfSite(ctx, site2.ID)
|
||||
posts, err := p.SelectPostsOfSite(ctx, site2.ID, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, posts, 2)
|
||||
assert.Equal(t, "New Post", posts[0].Title)
|
||||
|
|
@ -220,7 +220,7 @@ func TestProvider_Posts(t *testing.T) {
|
|||
}
|
||||
require.NoError(t, p.SaveSite(ctx, emptySite))
|
||||
|
||||
posts, err := p.SelectPostsOfSite(ctx, emptySite.ID)
|
||||
posts, err := p.SelectPostsOfSite(ctx, emptySite.ID, false)
|
||||
require.NoError(t, err)
|
||||
assert.Empty(t, posts)
|
||||
})
|
||||
|
|
@ -248,6 +248,7 @@ func TestProvider_PublishTargets(t *testing.T) {
|
|||
target := &models.SitePublishTarget{
|
||||
SiteID: site.ID,
|
||||
TargetType: "netlify",
|
||||
GUID: "target-001",
|
||||
BaseURL: "https://example.netlify.app",
|
||||
TargetRef: "netlify-site-123",
|
||||
TargetKey: "secret-key",
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ func (db *Provider) SelectPublishTargetsOfSite(ctx context.Context, siteID int64
|
|||
targets[i] = models.SitePublishTarget{
|
||||
ID: row.ID,
|
||||
SiteID: row.SiteID,
|
||||
GUID: row.Guid,
|
||||
Enabled: row.Enabled != 0,
|
||||
TargetType: row.TargetType,
|
||||
BaseURL: row.BaseUrl,
|
||||
|
|
@ -38,6 +39,7 @@ func (db *Provider) SavePublishTarget(ctx context.Context, target *models.SitePu
|
|||
newID, err := db.queries.InsertPublishTarget(ctx, sqlgen.InsertPublishTargetParams{
|
||||
SiteID: target.SiteID,
|
||||
TargetType: target.TargetType,
|
||||
Guid: target.GUID,
|
||||
Enabled: enabled,
|
||||
BaseUrl: target.BaseURL,
|
||||
TargetRef: target.TargetRef,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,15 @@ func (db *Provider) SelectSiteByID(ctx context.Context, id int64) (models.Site,
|
|||
return dbSiteToSite(row), nil
|
||||
}
|
||||
|
||||
func (db *Provider) SelectSiteByGUID(ctx context.Context, guid string) (models.Site, error) {
|
||||
row, err := db.queries.SelectSiteByGUID(ctx, guid)
|
||||
if err != nil {
|
||||
return models.Site{}, err
|
||||
}
|
||||
|
||||
return dbSiteToSite(row), nil
|
||||
}
|
||||
|
||||
func (db *Provider) SelectSitesOwnedByUser(ctx context.Context, ownerID int64) ([]models.Site, error) {
|
||||
rows, err := db.queries.SelectSitesOwnedByUser(ctx, ownerID)
|
||||
if err != nil {
|
||||
|
|
@ -58,6 +67,33 @@ func (db *Provider) HasUsersAndSites(ctx context.Context) (bool, error) {
|
|||
return nullBool.Valid && nullBool.Bool, nil
|
||||
}
|
||||
|
||||
type SiteWithOwner struct {
|
||||
ID int64
|
||||
GUID string
|
||||
Title string
|
||||
OwnerID int64
|
||||
Username string
|
||||
}
|
||||
|
||||
func (db *Provider) SelectAllSitesWithOwners(ctx context.Context) ([]SiteWithOwner, error) {
|
||||
rows, err := db.queries.SelectAllSitesWithOwners(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sites := make([]SiteWithOwner, len(rows))
|
||||
for i, row := range rows {
|
||||
sites[i] = SiteWithOwner{
|
||||
ID: row.ID,
|
||||
GUID: row.Guid,
|
||||
Title: row.Title,
|
||||
OwnerID: row.OwnerID,
|
||||
Username: row.Username,
|
||||
}
|
||||
}
|
||||
return sites, nil
|
||||
}
|
||||
|
||||
func dbSiteToSite(row sqlgen.Site) models.Site {
|
||||
return models.Site{
|
||||
ID: row.ID,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue