database_definition

This commit is contained in:
Thomas Hodnemyr 2022-09-17 14:30:26 +02:00
parent 9cf4eeedad
commit 9798cee411
1 changed files with 186 additions and 0 deletions

186
db.py Normal file
View File

@ -0,0 +1,186 @@
#! .\sbsheriff\scripts\python.exe
import sqlalchemy as sqla
from sqlalchemy.orm import declarative_base, relationship, scoped_session, sessionmaker
engine = sqla.create_engine('postgresql://strix:unnipus1213@192.168.1.2:5432/sbdb')
Base = declarative_base()
class World(Base):
__tablename__ = 'world'
id = sqla.Column(sqla.Integer, primary_key=True)
short_name = sqla.Column(sqla.String(50))
world_name = sqla.Column(sqla.String(50))
shk_id = sqla.Column(sqla.Integer)
age = sqla.Column(sqla.Integer)
ended = sqla.Column(sqla.Boolean)
hoh_scraped = sqla.Column(sqla.Boolean)
servers = relationship('Server',back_populates='worlds') #Checked
hoh_entries = relationship('Hall_Of_Heroes',back_populates='world') #Checked
house_histories = relationship('House_History',back_populates='world') #Checked
class Player(Base):
__tablename__ = 'player'
id = sqla.Column(sqla.Integer, primary_key=True)
player_name = sqla.Column(sqla.String(100))
user_id = sqla.Column(sqla.Integer,sqla.ForeignKey('user.id'))
user = relationship('User',back_populates='player') #Checked
vm_entries = relationship('Vm_Entry',back_populates='player') #Checked
hoh_entries = relationship("Hall_Of_Heroes",back_populates="player") #Checked
house_history = relationship("House_History",back_populates="player") #Checked
castle_designs = relationship("Player_Castle_Designs",back_populates="player") #Checked
server_user = sqla.Table(
"association",
Base.metadata,
sqla.Column("server_id",sqla.ForeignKey("server.id")),
sqla.Column("user_id",sqla.ForeignKey("user.id")),
)
class Server(Base):
__tablename__ = 'server'
id = sqla.Column(sqla.Integer, primary_key=True)
server_name = sqla.Column(sqla.Integer)
discord_guild_id = sqla.Column(sqla.BigInteger,unique=True)
world_id = sqla.Column(sqla.Integer,sqla.ForeignKey('world.id'))
worlds = relationship("World",back_populates="servers") #Checked
users = relationship("User",secondary=server_user,back_populates='servers') #Checked
class User(Base):
__tablename__ = 'user'
id = sqla.Column(sqla.Integer, primary_key=True)
discord_id = sqla.Column(sqla.BigInteger,unique=True)
display_name = sqla.Column(sqla.String(50))
servers = relationship("Server",secondary=server_user,back_populates='users') #Checked
#Parent in user prefferences relationship
user_prefference = relationship("User_Prefference",back_populates="user",uselist=False) #Checked
#Parent in user player relationship
player = relationship('Player',back_populates='user',uselist=False) #Checked
class User_Prefference(Base):
__tablename__ = 'user_prefference'
id = sqla.Column(sqla.Integer,primary_key=True)
preffered_pikes = sqla.Column(sqla.Integer)
preffered_archers = sqla.Column(sqla.Integer)
user_id = sqla.Column(sqla.Integer,sqla.ForeignKey('user.id'))
user = relationship('User',back_populates='user_prefference') #Checked
class Advert_Type(Base):
__tablename__ = 'advert_type'
id = sqla.Column(sqla.Integer, primary_key=True)
advert_name = sqla.Column(sqla.String(50))
adverts = relationship("Advert",back_populates="advert_type") #Checked
class Advert(Base):
__tablename__ = 'advert'
advert_id = sqla.Column(sqla.Integer, primary_key=True)
advert_type_id = sqla.Column(sqla.SmallInteger, sqla.ForeignKey("advert_type.id"))
channel_id = sqla.Column(sqla.BigInteger)
message_id = sqla.Column(sqla.BigInteger)
advert_type = relationship("Advert_Type",back_populates="adverts") #Checked
class Vm_Entry(Base):
__tablename__ = 'vm_entry'
id = sqla.Column(sqla.Integer, primary_key=True)
added_by_user_id = sqla.Column(sqla.Integer, sqla.ForeignKey("user.id"))
player_id = sqla.Column(sqla.Integer, sqla.ForeignKey("player.id"))
server_id = sqla.Column(sqla.Integer, sqla.ForeignKey("server.id"))
time_added = sqla.Column(sqla.Time)
time_ended = sqla.Column(sqla.Time,nullable=True)
player = relationship("Player",back_populates="vm_entries") #Checked
class House(Base):
__tablename__ = 'house'
id = sqla.Column(sqla.Integer, primary_key=True)
color = sqla.Column(sqla.String)
emoji = sqla.Column(sqla.String)
relationships = relationship("House_Relationship",back_populates="house")
class Relationship_State(Base):
__tablename__ = 'relationship_state'
id = sqla.Column(sqla.Integer, primary_key=True)
relationship_name = sqla.Column(sqla.String(50))
alignment = sqla.Column(sqla.Integer)
house_relations = relationship('House_Relationship',back_populates='relationship_state') #Checked
player_relations = relationship('Player_Relationship',back_populates='relationship_state')#Checked
class House_Relationship(Base):
__tablename__ = 'house_relationship'
id = sqla.Column(sqla.Integer, primary_key=True)
server_id = sqla.Column(sqla.Integer, sqla.ForeignKey("server.id"))
house_id = sqla.Column(sqla.Integer, sqla.ForeignKey("house.id"))
house = relationship("House",back_populates="relationships") #Checked
relationship_state_id = sqla.Column(sqla.Integer, sqla.ForeignKey("relationship_state.id"))
relationship_state = relationship("Relationship_State",back_populates="house_relations") #Checked
class Player_Relationship(Base):
__tablename__ = 'player_relationship'
id = sqla.Column(sqla.Integer, primary_key=True)
note = sqla.Column(sqla.String(100),nullable=True)
server_id = sqla.Column(sqla.Integer, sqla.ForeignKey("server.id"))
player_id = sqla.Column(sqla.Integer, sqla.ForeignKey("player.id"))
relationship_state_id = sqla.Column(sqla.Integer, sqla.ForeignKey("relationship_state.id"))
relationship_state = relationship('Relationship_State',back_populates='player_relations')#Checked
class Hoh_Rank(Base):
__tablename__ = 'hoh_rank'
id = sqla.Column(sqla.Integer, primary_key=True)
rank_name = sqla.Column(sqla.String(50))
hoh_entries = relationship("Hall_Of_Heroes",back_populates="rank") #Checked
class Hall_Of_Heroes(Base):
__tablename__ = 'hall_of_heroes'
id = sqla.Column(sqla.Integer,primary_key=True)
player_id = sqla.Column(sqla.Integer,sqla.ForeignKey('player.id'))
hoh_rank_id = sqla.Column(sqla.Integer,sqla.ForeignKey('hoh_rank.id'))
world_id = sqla.Column(sqla.Integer,sqla.ForeignKey('world.id'))
#Parent in player hoh relationship
player = relationship('Player',back_populates='hoh_entries') #Checked
rank = relationship('Hoh_Rank',back_populates='hoh_entries') #Checked
world = relationship('World',back_populates='hoh_entries') #Checked
class Player_Castle_Designs(Base):
__tablename__ = "player_castle_designs"
id = sqla.Column(sqla.Integer,primary_key=True)
path = sqla.Column(sqla.String)
player_id = sqla.Column(sqla.Integer,sqla.ForeignKey("player.id"))
server_id = sqla.Column(sqla.Integer,sqla.ForeignKey("server.id"))
player = relationship("Player", back_populates="castle_designs") #Checked
server = relationship("Server") #Checked
class House_History(Base):
__tablename__ = 'house_history'
id = sqla.Column(sqla.Integer,primary_key=True)
date = sqla.Column(sqla.Date)
player_id = sqla.Column(sqla.Integer,sqla.ForeignKey("player.id"))
world_id = sqla.Column(sqla.Integer,sqla.ForeignKey("world.id"))
house_id = sqla.Column(sqla.Integer,sqla.ForeignKey("house.id"))
player = relationship("Player",back_populates='house_history') #Checked
world = relationship("World",back_populates='house_histories') #Checked
house = relationship("House") #Checked
class Liegelord_Requests(Base):
__tablename__ = 'liegelord_requests'
id = sqla.Column(sqla.Integer,primary_key=True)
village_id = sqla.Column(sqla.SmallInteger)
confirm_message_id = sqla.Column(sqla.BigInteger)
server_id = sqla.Column(sqla.Integer,sqla.ForeignKey("server.id"))
request_user_id = sqla.Column(sqla.Integer,sqla.ForeignKey('user.id'))
fulfilled_user_id = sqla.Column(sqla.Integer,sqla.ForeignKey('user.id'))
server = relationship("Server") #Checked
request_user = relationship("User",foreign_keys=[request_user_id])
fulfilled_user= relationship("User",foreign_keys=[fulfilled_user_id])
def create_session():
session = scoped_session(sessionmaker(bind=engine))
return session