35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
from typing import Optional
|
|
from .data import Koan, KoanData
|
|
|
|
|
|
class KoanRegistry:
|
|
def __init__(self, data: KoanData):
|
|
self.data = data
|
|
|
|
async def init(self):
|
|
await self.data.init()
|
|
|
|
async def get_community_koans(self, communityid: int) -> list[Koan]:
|
|
return await Koan.fetch_where(communityid=communityid)
|
|
|
|
async def get_koan(self, koanid: int) -> Optional[Koan]:
|
|
return await Koan.fetch(koanid)
|
|
|
|
async def get_koan_named(self, communityid: int, name: str) -> Optional[Koan]:
|
|
name = name.lower()
|
|
koans = await Koan.fetch_where(communityid=communityid, name=name)
|
|
if koans:
|
|
return koans[0]
|
|
else:
|
|
return None
|
|
|
|
async def create_koan(self, communityid: int, name: str, message: str) -> Koan:
|
|
name = name.lower()
|
|
await Koan.table.delete_where(communityid=communityid, name=name)
|
|
koan = await Koan.create(
|
|
communityid=communityid,
|
|
name=name,
|
|
message=message
|
|
)
|
|
return koan
|