munch-ease-backend/persons/db.py
2024-01-13 19:44:07 +11:00

40 lines
No EOL
1,004 B
Python

from pydantic import BaseModel
from typing import List, ClassVar
class Person(BaseModel):
id: int
name: str
async def create(conn):
await conn.execute('''
CREATE TABLE IF NOT EXISTS Person (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE
);''')
async def get_by_id(conn, id: int) -> Person:
cursor = await conn.execute('''
SELECT id, name
FROM Person
WHERE id = ?
''', (id,))
row = await cursor.fetchone()
if not row:
return None
return Person(id=row[0], name=row[1])
async def get_all(conn) -> List[Person]:
async with conn.execute('''
SELECT id, name
FROM Person
''') as cursor:
async for row in cursor:
yield Person(id=row[0], name=row[1])
async def insert(conn, person: Person) -> Person:
cursor = await conn.execute('''
INSERT INTO Person (name)
VALUES (?)
''', (person.name,))
person.id = cursor.lastrowid
return person