diff --git a/batch/batch.go b/batch/batch.go index 3bba087fdaca6fa146d0a8984e1f71d21ad3d0d2..564dfe98b8f9b82231a8d27541fcd687da5ec16d 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 ab5d257c982f41b3d42d902cf9bc2cd4c7808802..d0d3c4638baecd0026632442ec400aa95bccc572 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 41cc642f6d4dae9c69bfa697c41d872cb357ebd3..11e3cb9f233b189136e2085395ec6d9cf89df058 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)