Rename database package.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
"""Small script to create the database if it doesn't already exist."""
|
||||
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
|
||||
if not Path("database/dakiny.db").exists():
|
||||
with sqlite3.connect("database/dakiny.db") as con:
|
||||
cur = con.cursor()
|
||||
|
||||
with Path("database_setup/database.sql", encoding="utf-8").open() as file:
|
||||
database_script = file.read()
|
||||
cur.executescript(database_script)
|
||||
con.commit()
|
||||
@@ -0,0 +1,64 @@
|
||||
CREATE TABLE ElectionInformation(
|
||||
ElectionName varchar(30) not null unique,
|
||||
ThreadId bigint unsigned not null,
|
||||
CouncilVoteMsgId bigint unsigned,
|
||||
HighCouncilVoteMsgId bigint unsigned,
|
||||
CouncilNominationMsgId bigint unsigned,
|
||||
HighCouncilNominationMsgId bigint unsigned,
|
||||
PRIMARY KEY (ElectionName)
|
||||
);
|
||||
|
||||
CREATE TABLE CouncilMembers(
|
||||
ElectionName varchar(30) not null,
|
||||
MemberId bigint unsigned not null,
|
||||
SpeechMsgId bigint unsigned not null,
|
||||
Elected boolean DEFAULT false,
|
||||
DiscordManager boolean DEFAULT false,
|
||||
ClanLeader boolean DEFAULT false,
|
||||
DiscordManagerSpeechId bigint unsigned,
|
||||
ClanLeaderSpeechId bigint unsigned,
|
||||
FOREIGN KEY (ElectionName) REFERENCES ElectionInformation(ElectionName),
|
||||
PRIMARY KEY (ElectionName, MemberId)
|
||||
);
|
||||
|
||||
CREATE TABLE Votes(
|
||||
ElectionName varchar(30) not null,
|
||||
VoterId bigint unsigned not null,
|
||||
VotedForId bigint unsigned,
|
||||
Type varchar(14) not null DEFAULT 'council' check("Type" in ('council', 'discordmanager', 'clanleader')),
|
||||
FOREIGN KEY (ElectionName) REFERENCES ElectionInformation(ElectionName),
|
||||
PRIMARY KEY (ElectionName, VoterId, Type)
|
||||
);
|
||||
|
||||
CREATE TABLE UserBirthday (
|
||||
UserId bigint unsigned not null,
|
||||
Birthday varchar(5) not null,
|
||||
PRIMARY KEY (UserId)
|
||||
);
|
||||
|
||||
CREATE TABLE Presences (
|
||||
Id integer PRIMARY KEY,
|
||||
Presence varchar(100) not null
|
||||
);
|
||||
|
||||
CREATE TABLE Points (
|
||||
QuarterName varchar(30) not null,
|
||||
UserId varchar(32) not null,
|
||||
DiscordMember boolean not null,
|
||||
EventPoints int unsigned DEFAULT 0,
|
||||
ClanPoints int unsigned DEFAULT 0,
|
||||
PRIMARY KEY (QuarterName, UserId)
|
||||
);
|
||||
|
||||
CREATE TABLE Messages (
|
||||
Path varchar(100) PRIMARY KEY,
|
||||
Id bigint unsigned not null
|
||||
);
|
||||
|
||||
CREATE TABLE PointsLimit (
|
||||
UserId varchar(32) not null,
|
||||
EventPoints int unsigned DEFAULT 0,
|
||||
ClanPoints int unsigned DEFAULT 0,
|
||||
Week varchar(7) not null,
|
||||
PRIMARY KEY (UserId, Week)
|
||||
);
|
||||
@@ -0,0 +1,7 @@
|
||||
[tool.ruff]
|
||||
# Extend the `pyproject.toml` file in the parent directory...
|
||||
extend = "../pyproject.toml"
|
||||
|
||||
[tool.ruff.lint]
|
||||
# ignore implicit-namespace-package in this directory.
|
||||
ignore = ["INP001"]
|
||||
@@ -0,0 +1,20 @@
|
||||
"""Simple file to set up the sqlalchemy connection to database."""
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.ext.automap import automap_base
|
||||
|
||||
# connect with sql alchemy and autoload schema
|
||||
URL = "sqlite+pysqlite:///database/dakiny.db"
|
||||
engine = create_engine(URL)
|
||||
Base = automap_base()
|
||||
Base.prepare(autoload_with=engine)
|
||||
|
||||
# define the classes
|
||||
Points = Base.classes.Points
|
||||
PointsLimit = Base.classes.PointsLimit
|
||||
CouncilMembers = Base.classes.CouncilMembers
|
||||
ElectionInformation = Base.classes.ElectionInformation
|
||||
Messages = Base.classes.Messages
|
||||
Presences = Base.classes.Presences
|
||||
UserBirthday = Base.classes.UserBirthday
|
||||
Votes = Base.classes.Votes
|
||||
Reference in New Issue
Block a user