WIP
This commit is contained in:
84
script/database_manager.py
Normal file
84
script/database_manager.py
Normal file
@ -0,0 +1,84 @@
|
||||
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,
|
||||
UNIQUE (ReleaseName, 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)
|
||||
);
|
||||
|
||||
-- Création de la table de jointure ApplicationServiceProvides
|
||||
CREATE TABLE ApplicationServiceProvides (
|
||||
ApplicationServiceId INTEGER NOT NULL,
|
||||
VirtualApplicationServiceId INTEGER NOT NULL,
|
||||
FOREIGN KEY (ApplicationServiceId) REFERENCES ApplicationService(ApplicationServiceId),
|
||||
FOREIGN KEY (VirtualApplicationServiceId) REFERENCES ApplicationService(ApplicationServiceId),
|
||||
PRIMARY KEY (ApplicationServiceId, VirtualApplicationServiceId)
|
||||
);
|
||||
|
||||
-- Création de la table Package
|
||||
CREATE TABLE Package (
|
||||
PackageId SERIAL PRIMARY KEY,
|
||||
PackageApplicationServiceId INTEGER,
|
||||
PackageName VARCHAR(255) NOT NULL,
|
||||
FOREIGN KEY (PackageApplicationServiceId) REFERENCES ApplicationService(ApplicationServiceId)
|
||||
);
|
||||
|
||||
-- Création de la table Document
|
||||
CREATE TABLE Document (
|
||||
DocumentId SERIAL PRIMARY KEY,
|
||||
DocumentServiceId INTEGER,
|
||||
DocumentName VARCHAR(255) NOT NULL,
|
||||
DocumentPath TEXT,
|
||||
DocumentOwner VARCHAR(255) DEFAULT 'root',
|
||||
DocumentGroup VARCHAR(255) DEFAULT 'root',
|
||||
DocumentMode VARCHAR(10) DEFAULT '0644',
|
||||
DocumentType VARCHAR(100) CHECK ( DocumentType IN ('probes', 'aggregated_dico', 'dico', 'template', 'pretemplate', 'posttemplate', 'preservice', 'postservice', 'creolefuncs', 'file') ),
|
||||
DocumentSHASUM VARCHAR(255),
|
||||
DocumentContent BYTEA,
|
||||
FOREIGN KEY (DocumentServiceId) REFERENCES ApplicationService(ApplicationServiceId)
|
||||
);
|
||||
"""
|
||||
|
||||
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)
|
||||
|
||||
asyncio.run(main())
|
Reference in New Issue
Block a user