gear-orders/db/queries.py

113 lines
2.4 KiB
Python

import datetime
from .models import database, User, OrdersPool, DomSubUsers, Repeat, SkipDay, OrderStatus, PunishmentStatus
def initdb():
database.connect()
database.create_tables([
Repeat,
SkipDay,
OrderStatus,
PunishmentStatus
])
def user_add(username, chat_id):
return User.create(
telegram_username=username,
telegram_chat_id=chat_id
)
def user_get(username):
return User.get(
telegram_username=username
)
def orders_pool_list(user_id):
return OrdersPool.select().where(OrdersPool.user_id == user_id)
def domsubusers_add(sub, dom):
return DomSubUsers.create(
sub=sub,
dom=dom
)
def domsubusers_delete(sub, dom):
q = DomSubUsers.get(
sub=sub,
dom=dom
).delete()
return q.execute()
def domsubusers_list(dom):
return DomSubUsers.select().where(DomSubUsers.dom == dom)
def repeat_get():
try:
return Repeat.get()
except Repeat.DoesNotExist:
return None
def repeat_increment():
q = Repeat.update(count=Repeat.count + 1)
return q.execute()
def repeat_put(probability, orders):
return Repeat.create(
probability=probability,
orders=orders
)
def repeat_clear():
q = Repeat.delete()
q.execute()
def skip_day_put(date):
return SkipDay.create(date=date)
def skip_day_delete(date):
q = SkipDay.delete().where(SkipDay.date == date)
return q.execute()
def skip_days_upcoming():
return (SkipDay.select()
.where(SkipDay.date >= datetime.date.today())
.order_by(SkipDay.date)
.limit(10))
def skip_day_contains(date):
q = SkipDay.select().where(SkipDay.date == date)
return len(q) > 0
def order_status_put(mastodon_id, created_at, due_at, text):
return OrderStatus.create(
mastodon_id=mastodon_id,
created_at=created_at,
due_at=due_at,
text=text
)
def order_status_outstanding():
return OrderStatus.select().where(
(OrderStatus.confirmed_at.is_null()) & (OrderStatus.punishment_id.is_null())
)
def order_status_confirm(id, confirmed_at):
q = OrderStatus.update(
confirmed_at=confirmed_at
).where(
OrderStatus.id == id
)
return q.execute()
def punishment_status_put(order_status_id, mastodon_id, created_at, text):
punishment_status = PunishmentStatus.create(
mastodon_id=mastodon_id,
created_at=created_at,
text=text
)
q = OrderStatus.update(
punishment_id=punishment_status.id
).where(
OrderStatus.id == order_status_id
)
q.execute()