diff options
Diffstat (limited to '')
-rw-r--r-- | sql/ddl/mysql.sql | 64 | ||||
-rw-r--r-- | sql/ddl/sqlite.sql | 64 | ||||
-rw-r--r-- | sql/sexps.sql | 4 | ||||
-rw-r--r-- | sql/users.sql | 8 | ||||
-rw-r--r-- | sqlc.yaml | 25 | ||||
-rw-r--r-- | sqlite.go | 9 | ||||
-rw-r--r-- | sqlite_win.go | 9 |
7 files changed, 183 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 diff --git a/sqlc.yaml b/sqlc.yaml new file mode 100644 index 0000000..2ada86d --- /dev/null +++ b/sqlc.yaml @@ -0,0 +1,25 @@ +version: "2" +sql: + - engine: "sqlite" + queries: "sql/*.sql" + schema: "sql/ddl/sqlite.sql" + gen: + go: + out: "model" + emit_sql_as_comment: true + build_tags: "sqlite" + output_db_file_name: "db_sqlite.go" + output_models_file_name: "models_sqlite.go" + output_files_suffix: ".sqlite" + + - engine: "mysql" + queries: "sql/*.sql" + schema: "sql/ddl/mysql.sql" + gen: + go: + out: "model" + emit_sql_as_comment: true + build_tags: "!sqlite" + output_db_file_name: "db_mysql.go" + output_models_file_name: "models_mysql.go" + output_files_suffix: ".mysql"
\ No newline at end of file diff --git a/sqlite.go b/sqlite.go new file mode 100644 index 0000000..cf65cb2 --- /dev/null +++ b/sqlite.go @@ -0,0 +1,9 @@ +//go:build sqlite && !windows + +package main + +import ( + _ "github.com/mattn/go-sqlite3" +) + +const driverName = "sqlite3" diff --git a/sqlite_win.go b/sqlite_win.go new file mode 100644 index 0000000..f01541a --- /dev/null +++ b/sqlite_win.go @@ -0,0 +1,9 @@ +//go:build sqlite && windows + +package main + +import ( + _ "modernc.org/sqlite" +) + +const driverName = "sqlite" |