summaryrefslogtreecommitdiff
path: root/init.sql
diff options
context:
space:
mode:
Diffstat (limited to 'init.sql')
-rw-r--r--init.sql40
1 files changed, 40 insertions, 0 deletions
diff --git a/init.sql b/init.sql
new file mode 100644
index 0000000..a02895a
--- /dev/null
+++ b/init.sql
@@ -0,0 +1,40 @@
+CREATE TABLE clients (
+ id SERIAL PRIMARY KEY,
+ name VARCHAR(50) NOT NULL,
+ mov_limit INTEGER NOT NULL
+);
+
+CREATE TYPE transaction_type AS ENUM ('credit', 'debit');
+
+CREATE TABLE transactions (
+ id SERIAL PRIMARY KEY,
+ client_id INTEGER REFERENCES clients,
+ value INTEGER NOT NULL,
+ type transaction_type NOT NULL,
+ description VARCHAR(10) NOT NULL,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+);
+
+CREATE INDEX idx_client_id_transactions ON transactions (client_id);
+
+CREATE TABLE balances (
+ id SERIAL PRIMARY KEY,
+ client_id INTEGER REFERENCES clients,
+ value INTEGER NOT NULL
+);
+
+CREATE INDEX idx_client_id_balances ON balances (client_id);
+
+DO $$
+BEGIN
+ INSERT INTO clients (name, mov_limit)
+ VALUES
+ ('naruto', 100000),
+ ('mob', 80000),
+ ('jojo', 1000000),
+ ('hellboy', 10000000),
+ ('ultramega', 500000);
+ INSERT INTO balances (client_id, value)
+ SELECT id, 0 FROM clients;
+END;
+$$