57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
import asyncio
|
|
import asyncpg
|
|
import os
|
|
from asyncpg.connection import Connection
|
|
|
|
|
|
async def init_tables(connection: Connection):
|
|
init_users_query = """
|
|
CREATE TABLE users (
|
|
user_id bigint PRIMARY KEY,
|
|
is_admin boolean DEFAULT FALSE
|
|
);
|
|
"""
|
|
await connection.execute(init_users_query)
|
|
|
|
init_tags_query = """
|
|
CREATE TABLE tags (
|
|
id SERIAL PRIMARY KEY,
|
|
name varchar(100)
|
|
);
|
|
"""
|
|
await connection.execute(init_tags_query)
|
|
|
|
init_categories_query = """
|
|
CREATE TABLE categories (
|
|
id SERIAL PRIMARY KEY,
|
|
name varchar(20)
|
|
);
|
|
"""
|
|
await connection.execute(init_categories_query)
|
|
|
|
init_projects_query = """
|
|
CREATE TABLE projects (
|
|
id SERIAL PRIMARY KEY,
|
|
name varchar(50),
|
|
description varchar(1000),
|
|
creator bigint REFERENCES users,
|
|
contributors smallint DEFAULT 1,
|
|
status bit(1) DEFAULT B'1',
|
|
tag int REFERENCES tags,
|
|
category int REFERENCES categories,
|
|
creation_date date DEFAULT CURRENT_DATE
|
|
);
|
|
"""
|
|
await connection.execute(init_projects_query)
|
|
|
|
|
|
async def main():
|
|
DB_URL = os.getenv("DB_URL")
|
|
connection = await asyncpg.connect(DB_URL)
|
|
await init_tables(connection)
|
|
await connection.close()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
asyncio.run(main())
|