From 5251e2e0fc88dcf54ad4fc246ca40ce8cca8ab8c Mon Sep 17 00:00:00 2001 From: Kevin Lyda <kevin@lyda.ie> Date: Wed, 14 May 2025 23:38:04 +0100 Subject: [PATCH] Add a new post --- batch/batch.go | 12 +++++++++++- storage/queries/seed.sql | 8 ++++++++ storage/seed.sql.go | 29 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/batch/batch.go b/batch/batch.go index 3bba087..564dfe9 100644 --- a/batch/batch.go +++ b/batch/batch.go @@ -10,6 +10,7 @@ import ( "path" "strings" "text/template" + "time" "git.lyda.ie/kevin/bulletin/ask" "git.lyda.ie/kevin/bulletin/key" @@ -20,6 +21,9 @@ import ( //go:embed crontab var crontabTemplate string +//go:embed announcement-2.06.txt +var announce206 string + // Reboot deletes all messages with `shutdown` set. func Reboot() int { fmt.Println("TODO: Delete messages with shutdown != 0.") @@ -64,11 +68,17 @@ func Install() int { ask.CheckErr(q.SeedUserSystem(ctx)) ask.CheckErr(q.SeedFolderGeneral(ctx)) ask.CheckErr(q.SeedGeneralOwner(ctx)) + ask.CheckErr(q.SeedCreateMessage(ctx, storage.SeedCreateMessageParams{ + Folder: "GENERAL", + Folder_2: "GENERAL", + Subject: "Announcing PFC BULLETIN 2.06", + Message: announce206, + Expiration: time.Now(), + })) _, err = q.AddUser(ctx, storage.AddUserParams{ Login: login, Name: name, }) - ask.CheckErr(q.SeedGeneralOwner(ctx)) key.Add(login, sshkey) // Install crontab. diff --git a/storage/queries/seed.sql b/storage/queries/seed.sql index ab5d257..d0d3c46 100644 --- a/storage/queries/seed.sql +++ b/storage/queries/seed.sql @@ -8,3 +8,11 @@ -- name: SeedGeneralOwner :exec INSERT INTO owners (folder, login) VALUES ('GENERAL', 'SYSTEM'); + +-- name: SeedCreateMessage :exec +INSERT INTO messages ( + id, + folder, author, subject, message, permanent, expiration +) VALUES ( + (SELECT COALESCE(MAX(id), 0) + 1 FROM messages AS m WHERE m.folder = ?), + ?, 'SYSTEM', ?, ?, 1, ?); diff --git a/storage/seed.sql.go b/storage/seed.sql.go index 41cc642..11e3cb9 100644 --- a/storage/seed.sql.go +++ b/storage/seed.sql.go @@ -7,8 +7,37 @@ package storage import ( "context" + "time" ) +const seedCreateMessage = `-- name: SeedCreateMessage :exec +INSERT INTO messages ( + id, + folder, author, subject, message, permanent, expiration +) VALUES ( + (SELECT COALESCE(MAX(id), 0) + 1 FROM messages AS m WHERE m.folder = ?), + ?, 'SYSTEM', ?, ?, 1, ?) +` + +type SeedCreateMessageParams struct { + Folder string + Folder_2 string + Subject string + Message string + Expiration time.Time +} + +func (q *Queries) SeedCreateMessage(ctx context.Context, arg SeedCreateMessageParams) error { + _, err := q.db.ExecContext(ctx, seedCreateMessage, + arg.Folder, + arg.Folder_2, + arg.Subject, + arg.Message, + arg.Expiration, + ) + return err +} + const seedFolderGeneral = `-- name: SeedFolderGeneral :exec INSERT INTO folders (name, description, system, shownew) VALUES ('GENERAL', 'Default general bulletin folder.', 1, 1) -- GitLab