major: séparer commande de librairie importable

Bump major version à 9

package main déplacé vers cmd/bottin/ pour garder `go install` qui nomme
l'exécutable `bottin`, sans empêcher d'importer le code à l'extérieur du
projet avec pkg/bottin/.

Déplacer fichiers SQL vers queries/

Déplacer fichiers html vers templates/

Ajouter scripts/ avec génération et injection de certificats x509
(https) et les ajouter au Makefile

Ajouter début d'exemple de manifests dans deployments/kubernetes/
This commit is contained in:
Victor Lacasse-Beaudoin 2024-09-18 19:06:33 -04:00
parent a17d6bf06c
commit b419a5b260
25 changed files with 513 additions and 451 deletions

14
queries/queries.go Normal file
View file

@ -0,0 +1,14 @@
package queries
import (
_ "embed"
)
//go:embed schema.sql
var sqlSchema string
//go:embed views.sql
var sqlViews string
func SQLSchema() string { return sqlSchema }
func SQLViews() string { return sqlViews }

12
queries/schema.sql Normal file
View file

@ -0,0 +1,12 @@
CREATE TABLE IF NOT EXISTS programmes (
id TEXT PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS membres (
id VARCHAR(7) PRIMARY KEY,
last_name TEXT NOT NULL,
first_name TEXT NOT NULL,
prefered_name TEXT,
programme_id TEXT REFERENCES programmes(id) NOT NULL
);

23
queries/views.sql Normal file
View file

@ -0,0 +1,23 @@
-- membres_for_display affiche le numéro étudiant, nom complet OU prefered_name, et titre du programme.
--
-- Utilisé par l'application web pour rechercher et afficher les informations des membres
CREATE OR REPLACE VIEW
"membres_for_display"
AS (
SELECT
"membres".id,
CASE
WHEN
"membres".prefered_name != '' AND "membres".prefered_name IS NOT NULL
THEN
"membres".prefered_name
ELSE
CONCAT("membres".last_name, ', ', "membres".first_name)
END AS name,
"programmes".id AS programme_id,
"programmes".name AS programme_name
FROM
"membres"
INNER JOIN
"programmes" ON "programmes".id = "membres".programme_id
);