source: db-scripts/ddl.sql@ 37307aa

Last change on this file since 37307aa was 37307aa, checked in by Andrej <asumanovski@…>, 3 months ago

env file issue fix

  • Property mode set to 100644
File size: 3.9 KB
RevLine 
[59ed25c]1DROP SCHEMA IF EXISTS trekr CASCADE;
2
3CREATE SCHEMA trekr;
4
5SET search_path TO trekr;
6DROP TABLE IF EXISTS TASK_DAILY_COMPLETION;
7DROP TABLE IF EXISTS DAILY_COMPLETION;
8DROP TABLE IF EXISTS TASKS;
9DROP TABLE IF EXISTS CUSTOM_TRACKING_CATEGORIES;
10DROP TABLE IF EXISTS ASSETS;
11DROP TABLE IF EXISTS INVESTOR_USERS;
12DROP TABLE IF EXISTS DAILY_INTAKES;
13DROP TABLE IF EXISTS WEIGHT_USERS;
14DROP TABLE IF EXISTS TRAINING_SESSIONS;
15DROP TABLE IF EXISTS TRAINING_USERS;
16DROP TABLE IF EXISTS INCOMES;
17DROP TABLE IF EXISTS FINANCE_USERS;
18DROP TABLE IF EXISTS DISCIPLINE_USERS;
19DROP TABLE IF EXISTS USERS;
20
21CREATE TABLE USERS (
[3ebe47c]22 user_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[37307aa]23 email TEXT NOT NULL UNIQUE,
24 username TEXT NOT NULL UNIQUE,
[59ed25c]25 password TEXT NOT NULL
26);
27
28CREATE TABLE FINANCE_USERS (
29 user_id BIGINT PRIMARY KEY
30 REFERENCES USERS(user_id) ON DELETE CASCADE,
31 spending_budget NUMERIC,
32 saving_budget NUMERIC,
33 investing_budget NUMERIC,
34 donation_budget NUMERIC,
35 credit NUMERIC
36);
37
38CREATE TABLE INCOMES (
[8615885]39 income_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]40 user_id BIGINT
41 REFERENCES FINANCE_USERS(user_id) ON DELETE CASCADE,
42 date DATE NOT NULL,
43 amount NUMERIC NOT NULL
44);
45
46CREATE TABLE TRAINING_USERS (
47 user_id BIGINT PRIMARY KEY
48 REFERENCES USERS(user_id) ON DELETE CASCADE,
49 gender TEXT,
50 age INTEGER,
51 weight NUMERIC
52);
53
54CREATE TABLE WEIGHT_USERS (
55 user_id BIGINT PRIMARY KEY
56 REFERENCES USERS(user_id) ON DELETE CASCADE,
57 weight NUMERIC,
58 height NUMERIC,
59 goal_weight NUMERIC,
60 goal_calories NUMERIC
61);
62
63CREATE TABLE DAILY_INTAKES (
[8615885]64 daily_intake_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]65 user_id BIGINT
66 REFERENCES WEIGHT_USERS(user_id) ON DELETE CASCADE,
67 calories NUMERIC,
68 date DATE
69);
70
71CREATE TABLE TRAINING_SESSIONS (
[8615885]72 training_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]73 training_user_id BIGINT
74 REFERENCES TRAINING_USERS(user_id) ON DELETE CASCADE,
75 duration NUMERIC,
76 calories NUMERIC,
77 date DATE,
78 type TEXT
79);
80
81CREATE TABLE DISCIPLINE_USERS (
82 user_id BIGINT PRIMARY KEY
[c4c43f3]83 REFERENCES USERS(user_id) ON DELETE CASCADE
[59ed25c]84);
85
86CREATE TABLE CUSTOM_TRACKING_CATEGORIES (
[8615885]87 custom_tracking_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]88 user_id BIGINT
89 REFERENCES USERS(user_id) ON DELETE CASCADE,
[c4c43f3]90 name TEXT NOT NULL
[59ed25c]91);
92
93CREATE TABLE TASKS (
[8615885]94 task_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]95 name TEXT NOT NULL,
96 is_finished BOOLEAN NOT NULL DEFAULT FALSE,
97
98 discipline_user_id BIGINT
99 REFERENCES DISCIPLINE_USERS(user_id) ON DELETE CASCADE,
100
101 custom_tracking_id BIGINT
102 REFERENCES CUSTOM_TRACKING_CATEGORIES(custom_tracking_id)
103 ON DELETE CASCADE,
104
105 CONSTRAINT task_belongs_to_exactly_one_category
106 CHECK (
107 (discipline_user_id IS NOT NULL AND custom_tracking_id IS NULL)
108 OR
109 (discipline_user_id IS NULL AND custom_tracking_id IS NOT NULL)
110 )
111);
112
113CREATE TABLE DAILY_COMPLETION (
[8615885]114 daily_completion_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]115 user_id BIGINT
116 REFERENCES USERS(user_id) ON DELETE CASCADE,
117 date DATE,
118 procent NUMERIC
119);
120
121CREATE TABLE TASK_DAILY_COMPLETION (
122 task_id BIGINT
123 REFERENCES TASKS(task_id) ON DELETE CASCADE,
124 daily_completion_id BIGINT
125 REFERENCES DAILY_COMPLETION(daily_completion_id) ON DELETE CASCADE,
126
127 CONSTRAINT task_daily_completion_pk
128 PRIMARY KEY (task_id, daily_completion_id)
129);
130
131CREATE TABLE INVESTOR_USERS (
132 user_id BIGINT PRIMARY KEY
133 REFERENCES USERS(user_id) ON DELETE CASCADE
134);
135
136CREATE TABLE ASSETS (
[8615885]137 asset_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
[59ed25c]138 user_id BIGINT
139 REFERENCES INVESTOR_USERS(user_id) ON DELETE CASCADE,
140 ticker_symbol TEXT NOT NULL,
141 buy_price NUMERIC,
142 buy_date DATE,
143 quantity NUMERIC
144);
Note: See TracBrowser for help on using the repository browser.