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())