import asyncpg import asyncio from risotto.config import get_config VERSION_INIT = """ -- Création de la table Source CREATE TABLE Source ( SourceId SERIAL PRIMARY KEY, SourceName VARCHAR(255) NOT NULL UNIQUE, SourceURL TEXT ); -- Création de la table Release CREATE TABLE Release ( ReleaseId SERIAL PRIMARY KEY, ReleaseName VARCHAR(255) NOT NULL, ReleaseSourceId INTEGER NOT NULL, ReleaseDistribution VARCHAR(20) CONSTRAINT releasedistribution_choice CHECK (ReleaseDistribution IN ('last', 'n-1', 'n-2')), UNIQUE (ReleaseName, ReleaseSourceId), UNIQUE (ReleaseDistribution, ReleaseSourceId), FOREIGN KEY (ReleaseSourceId) REFERENCES Source(SourceId) ); -- Création de la table Servermodel CREATE TABLE Servermodel ( ServermodelId SERIAL PRIMARY KEY, ServermodelName VARCHAR(255) NOT NULL, ServermodelDescription VARCHAR(255) NOT NULL, ServermodelParentsId INTEGER [] DEFAULT '{}', ServermodelReleaseId INTEGER NOT NULL, ServermodelApplicationServiceId INTEGER NOT NULL, ServermodelUsers hstore, UNIQUE (ServermodelName, ServermodelReleaseId) ); -- Création de la table ApplicationService CREATE TABLE ApplicationService ( ApplicationServiceId SERIAL PRIMARY KEY, ApplicationServiceName VARCHAR(255) NOT NULL, ApplicationServiceDescription VARCHAR(255) NOT NULL, ApplicationServiceReleaseId INTEGER NOT NULL, ApplicationServiceDependencies JSON, UNIQUE (ApplicationServiceName, ApplicationServiceReleaseId) ); -- Server table creation CREATE TABLE Server ( ServerId SERIAL PRIMARY KEY, ServerName VARCHAR(255) NOT NULL, ServerDescription VARCHAR(255) NOT NULL, ServerServermodelId INTEGER NOT NULL ); """ async def main(): db_conf = get_config().get('database') pool = await asyncpg.create_pool(database=db_conf.get('dbname'), user=db_conf.get('user')) async with pool.acquire() as connection: async with connection.transaction(): returns = await connection.execute(VERSION_INIT) if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main()) # asyncio.run(main())