From ed19b82335345833c5b8f5446237d559a3657a35 Mon Sep 17 00:00:00 2001
From: xengineering <me@xengineering.eu>
Date: Sun, 13 Oct 2024 14:08:26 +0200
Subject: Introduce xengineering.eu/ceres/model/migrations

This new package is only for database migrations. All data for Ceres
should be stored inside the SQLite3 database. Thus migrations can always
be executed with functions with the following signature.

    func(tx *sql.Tx) error

Those migration functions should be stored inside the new package.
Bigger SQL code can be stored in *.sql files for better syntax
highlighting. This code is embedded into the final Go executable by
using the embed package.
---
 model/migrations/migration001.sql | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 model/migrations/migration001.sql

(limited to 'model/migrations/migration001.sql')

diff --git a/model/migrations/migration001.sql b/model/migrations/migration001.sql
new file mode 100644
index 0000000..46f9fc6
--- /dev/null
+++ b/model/migrations/migration001.sql
@@ -0,0 +1,29 @@
+PRAGMA foreign_keys = ON;
+
+CREATE TABLE recipes (
+	id           INTEGER PRIMARY KEY,
+	title        TEXT    NOT NULL,
+	portions     INTEGER NOT NULL,
+	url          TEXT    NOT NULL,
+	notes        TEXT    NOT NULL,
+	created      INTEGER NOT NULL,     -- Unix time stamp
+	last_changed INTEGER NOT NULL      -- Unix time stamp
+);
+
+CREATE TABLE steps (
+	id      INTEGER PRIMARY KEY,
+	'index' INTEGER NOT NULL,
+	text    TEXT    NOT NULL,
+	recipe  INTEGER NOT NULL,
+	FOREIGN KEY(recipe) REFERENCES recipes(id)
+);
+
+CREATE TABLE ingredients (
+	id      INTEGER PRIMARY KEY,
+	'index' INTEGER NOT NULL,
+	amount  REAL    NOT NULL,
+	unit    TEXT    NOT NULL,
+	'type'  TEXT    NOT NULL,
+	step    INTEGER NOT NULL,
+	FOREIGN KEY(step) REFERENCES steps(id)
+);
-- 
cgit v1.2.3-70-g09d2

