mirror of
https://github.com/mruwnik/chicken-master.git
synced 2025-06-08 21:34:43 +02:00
63 lines
1.6 KiB
Clojure
63 lines
1.6 KiB
Clojure
{:up ["CREATE EXTENSION pgcrypto;"
|
|
"CREATE TABLE users (
|
|
id SERIAL,
|
|
name VARCHAR(256) UNIQUE,
|
|
password VARCHAR(256),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY(id)
|
|
);"
|
|
|
|
"CREATE TABLE customers (
|
|
id SERIAL,
|
|
name VARCHAR(512),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
deleted BOOLEAN,
|
|
user_id INT,
|
|
PRIMARY KEY(id),
|
|
UNIQUE(name, user_id),
|
|
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
|
|
);"
|
|
|
|
"CREATE TABLE products (
|
|
id SERIAL,
|
|
name VARCHAR(512),
|
|
amount NUMERIC,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
deleted BOOLEAN,
|
|
user_id INT,
|
|
PRIMARY KEY(id),
|
|
UNIQUE(name, user_id),
|
|
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
|
|
);"
|
|
|
|
"CREATE TYPE order_state AS ENUM('waiting', 'fulfilled', 'canceled');"
|
|
"CREATE TABLE orders (
|
|
id SERIAL,
|
|
customer_id INT,
|
|
notes TEXT,
|
|
status order_state DEFAULT 'waiting',
|
|
order_date TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
user_id INT,
|
|
PRIMARY KEY(id),
|
|
CONSTRAINT fk_customer FOREIGN KEY(customer_id) REFERENCES customers(id),
|
|
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
|
|
);"
|
|
|
|
"CREATE TABLE order_products (
|
|
id SERIAL,
|
|
order_id INT,
|
|
product_id INT,
|
|
amount NUMERIC,
|
|
PRIMARY KEY(id),
|
|
CONSTRAINT fk_order FOREIGN KEY(order_id) REFERENCES orders(id),
|
|
CONSTRAINT fk_product FOREIGN KEY(product_id) REFERENCES products(id)
|
|
);"]
|
|
:down ["DROP TABLE order_products"
|
|
"DROP TABLE products"
|
|
"DROP TABLE orders"
|
|
"DROP TYPE order_state"
|
|
"DROP TABLE customers"
|
|
"DROP TABLE users"
|
|
"DROP EXTENSION pgcrypto"]}
|