writekit/internal/tenant/pages.go

40 lines
1.1 KiB
Go
Raw Permalink Normal View History

2026-01-09 00:16:46 +02:00
package tenant
import (
"context"
"database/sql"
"time"
)
func (q *Queries) GetPage(ctx context.Context, path string) ([]byte, string, error) {
var html []byte
var etag sql.NullString
err := q.db.QueryRowContext(ctx, `SELECT html, etag FROM pages WHERE path = ?`, path).Scan(&html, &etag)
if err == sql.ErrNoRows {
return nil, "", nil
}
if err != nil {
return nil, "", err
}
return html, etag.String, nil
}
func (q *Queries) SetPage(ctx context.Context, path string, html []byte, etag string) error {
now := time.Now().UTC().Format(time.RFC3339)
_, err := q.db.ExecContext(ctx, `INSERT INTO pages (path, html, etag, built_at)
VALUES (?, ?, ?, ?)
ON CONFLICT(path) DO UPDATE SET html = excluded.html, etag = excluded.etag, built_at = excluded.built_at`,
path, html, nullStr(etag), now)
return err
}
func (q *Queries) DeleteAllPages(ctx context.Context) error {
_, err := q.db.ExecContext(ctx, `DELETE FROM pages`)
return err
}
func (q *Queries) DeletePage(ctx context.Context, path string) error {
_, err := q.db.ExecContext(ctx, `DELETE FROM pages WHERE path = ?`, path)
return err
}