[core] Add database model
This commit is contained in:
parent
c05d8cadad
commit
e03e7660b2
64
kibicara/model.py
Normal file
64
kibicara/model.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
# Copyright (C) 2020 by Thomas Lindner <tom@dl6tom.de>
|
||||
# Copyright (C) 2020 by Cathy Hu <cathy.hu@fau.de>
|
||||
#
|
||||
# SPDX-License-Identifier: 0BSD
|
||||
|
||||
from databases import Database
|
||||
from kibicara.config import config
|
||||
from ormantic import Integer, ForeignKey, Model, Text
|
||||
from sqlalchemy import create_engine, MetaData
|
||||
|
||||
|
||||
class Mapping:
|
||||
database = Database(config['database_connection'])
|
||||
metadata = MetaData()
|
||||
|
||||
@classmethod
|
||||
def create_all(cls):
|
||||
engine = create_engine(str(cls.database.url))
|
||||
cls.metadata.create_all(engine)
|
||||
|
||||
|
||||
class Admin(Model):
|
||||
id: Integer(primary_key=True) = None
|
||||
email: Text(unique=True)
|
||||
passhash: Text()
|
||||
|
||||
class Mapping(Mapping):
|
||||
table_name = 'admins'
|
||||
|
||||
|
||||
class Hood(Model):
|
||||
id: Integer(primary_key=True) = None
|
||||
name: Text(unique=True)
|
||||
landingpage: Text()
|
||||
|
||||
class Mapping(Mapping):
|
||||
table_name = 'hoods'
|
||||
|
||||
|
||||
class AdminHoodRelation(Model):
|
||||
id: Integer(primary_key=True) = None
|
||||
admin: ForeignKey(Admin)
|
||||
hood: ForeignKey(Hood)
|
||||
|
||||
class Mapping(Mapping):
|
||||
table_name = 'admin_hood_relations'
|
||||
|
||||
|
||||
class Trigger(Model):
|
||||
id: Integer(primary_key=True) = None
|
||||
hood: ForeignKey(Hood)
|
||||
pattern: Text()
|
||||
|
||||
class Mapping(Mapping):
|
||||
table_name = 'triggers'
|
||||
|
||||
|
||||
class BadWord(Model):
|
||||
id: Integer(primary_key=True) = None
|
||||
hood: ForeignKey(Hood)
|
||||
pattern: Text()
|
||||
|
||||
class Mapping(Mapping):
|
||||
table_name = 'badwords'
|
Loading…
Reference in a new issue