summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorRené Neumann <necoro@necoro.eu>2024-02-10 18:46:39 +0100
committerRené Neumann <necoro@necoro.eu>2024-02-10 18:46:39 +0100
commit2d90d4e00a111ddf22440334d99323fe0d8216be (patch)
treeae2d556cfa47b22851a39da03cf4676c9ddad46a /sql
parent1ed875839ef4a91f9f85a02bb6bba72090bf4923 (diff)
downloadgosten-2d90d4e00a111ddf22440334d99323fe0d8216be.tar.gz
gosten-2d90d4e00a111ddf22440334d99323fe0d8216be.tar.bz2
gosten-2d90d4e00a111ddf22440334d99323fe0d8216be.zip
First SQL setup
Diffstat (limited to 'sql')
-rw-r--r--sql/ddl/mysql.sql64
-rw-r--r--sql/ddl/sqlite.sql64
-rw-r--r--sql/sexps.sql4
-rw-r--r--sql/users.sql8
4 files changed, 140 insertions, 0 deletions
diff --git a/sql/ddl/mysql.sql b/sql/ddl/mysql.sql
new file mode 100644
index 0000000..47315f9
--- /dev/null
+++ b/sql/ddl/mysql.sql
@@ -0,0 +1,64 @@
+create table users
+(
+ id INTEGER not null
+ primary key,
+ name VARCHAR(50) not null
+ unique,
+ pwd VARCHAR(255) not null,
+ description VARCHAR(100)
+);
+
+create table categories
+(
+ id INTEGER not null
+ primary key,
+ name VARCHAR(50) not null,
+ parent_id INTEGER
+ references categories,
+ user_id INTEGER not null
+ references users
+);
+
+create table const_expenses
+(
+ id INTEGER not null
+ primary key,
+ description VARCHAR(50),
+ expense NUMERIC(10, 2) not null,
+ months SMALLINT not null,
+ start DATE not null,
+ end DATE not null,
+ prev_id INTEGER
+ references const_expenses,
+ user_id INTEGER not null
+ references users,
+ category_id INTEGER not null
+ references categories
+);
+
+create index idx_start_end
+ on const_expenses (user_id, start, end);
+
+create index ix_constexpense_end
+ on const_expenses (end);
+
+create index ix_constexpense_start
+ on const_expenses (start);
+
+create table single_expenses
+(
+ id INTEGER not null
+ primary key,
+ description VARCHAR(50),
+ expense NUMERIC(10, 2) not null,
+ year INTEGER not null,
+ month SMALLINT not null,
+ day SMALLINT not null,
+ user_id INTEGER not null
+ references users,
+ category_id INTEGER not null
+ references categories
+);
+
+create index idx_single_date
+ on single_expenses (user_id, year, month);
diff --git a/sql/ddl/sqlite.sql b/sql/ddl/sqlite.sql
new file mode 100644
index 0000000..47315f9
--- /dev/null
+++ b/sql/ddl/sqlite.sql
@@ -0,0 +1,64 @@
+create table users
+(
+ id INTEGER not null
+ primary key,
+ name VARCHAR(50) not null
+ unique,
+ pwd VARCHAR(255) not null,
+ description VARCHAR(100)
+);
+
+create table categories
+(
+ id INTEGER not null
+ primary key,
+ name VARCHAR(50) not null,
+ parent_id INTEGER
+ references categories,
+ user_id INTEGER not null
+ references users
+);
+
+create table const_expenses
+(
+ id INTEGER not null
+ primary key,
+ description VARCHAR(50),
+ expense NUMERIC(10, 2) not null,
+ months SMALLINT not null,
+ start DATE not null,
+ end DATE not null,
+ prev_id INTEGER
+ references const_expenses,
+ user_id INTEGER not null
+ references users,
+ category_id INTEGER not null
+ references categories
+);
+
+create index idx_start_end
+ on const_expenses (user_id, start, end);
+
+create index ix_constexpense_end
+ on const_expenses (end);
+
+create index ix_constexpense_start
+ on const_expenses (start);
+
+create table single_expenses
+(
+ id INTEGER not null
+ primary key,
+ description VARCHAR(50),
+ expense NUMERIC(10, 2) not null,
+ year INTEGER not null,
+ month SMALLINT not null,
+ day SMALLINT not null,
+ user_id INTEGER not null
+ references users,
+ category_id INTEGER not null
+ references categories
+);
+
+create index idx_single_date
+ on single_expenses (user_id, year, month);
diff --git a/sql/sexps.sql b/sql/sexps.sql
new file mode 100644
index 0000000..ae387ee
--- /dev/null
+++ b/sql/sexps.sql
@@ -0,0 +1,4 @@
+-- name: GetSingleExpenses :many
+SELECT id, description
+ FROM single_expenses
+ WHERE user_id = ?; \ No newline at end of file
diff --git a/sql/users.sql b/sql/users.sql
new file mode 100644
index 0000000..d16492a
--- /dev/null
+++ b/sql/users.sql
@@ -0,0 +1,8 @@
+-- name: GetUsers :many
+SELECT *
+ FROM users;
+
+-- name: GetUser :one
+SELECT *
+ FROM users
+ WHERE name = ?; \ No newline at end of file