clacksme/clacksme/model.py
Morgan McMillian ab5c6e7712
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline failed
Add http_get notification type and toggle for read_only mailbox
This closes #2
2023-04-02 05:49:33 -07:00

75 lines
1.8 KiB
Python

from peewee import *
from playhouse.migrate import *
from playhouse.sqlite_ext import SqliteExtDatabase
db = SqliteExtDatabase(None)
migrator = SqliteMigrator(db)
db_schema = "2"
class BaseModel(Model):
class Meta:
database = db
class System(BaseModel):
key = CharField(unique=True)
value = CharField()
class Mailbox(BaseModel):
user = CharField()
imap_host = CharField()
imap_user = CharField()
imap_pass = CharField()
last_check = DateTimeField(null=True)
read_only = BooleanField(default=True)
class Events(BaseModel):
user = CharField()
mailbox = CharField()
event_id = CharField()
class Notifier(BaseModel):
service = CharField()
client_id = CharField(null=True)
secret = CharField(null=True)
url = CharField(null=True)
class Services(BaseModel):
user = CharField()
service = CharField()
target = CharField()
enabled = BooleanField(default=True)
def create_tables():
tables = [System, Mailbox, Events, Notifier, Services]
with db:
if not db.table_exists(System._meta.table_name):
db.create_tables(tables)
System.replace(key="schema", value=db_schema).execute()
else:
schema_ver = System.get_or_none(key="schema")
migrate_tables(schema_ver)
def migrate_tables(schema_ver):
if schema_ver is None or schema_ver.value == "1":
schema_ver = migrate_v2()
# if schema_ver == "2":
# schema_ver = migrate_v3()
System.replace(key="schema", value=db_schema).execute()
def migrate_v2():
# migration to schema version 2
read_only = BooleanField(default=True)
migrate(
migrator.add_column(
Mailbox._meta.table_name, 'read_only', read_only),
)
return "2"
# def migrate_v3():
# # migration to schema version 3
# return "3"