mirror of
https://github.com/yawaflua/BiahadHakatonProject.git
synced 2025-12-08 19:29:35 +02:00
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from db_repository.BaseRepositories import BaseCRUDRepository
|
|
from db_repository.schemas.volunteer import VolunteerSchema
|
|
from typing import List
|
|
|
|
|
|
class VolunteerRepository(BaseCRUDRepository):
|
|
table_name = "volunteers"
|
|
schema = VolunteerSchema
|
|
|
|
def _get_columns_definition(self) -> str:
|
|
return (
|
|
"name TEXT NOT NULL, "
|
|
"contact TEXT NOT NULL"
|
|
)
|
|
|
|
@property
|
|
def create_table_sql(self) -> str:
|
|
return f"""
|
|
CREATE TABLE IF NOT EXISTS {self.table_name} (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
{self._get_columns_definition()}
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS volunteer_apartments (
|
|
volunteer_id INTEGER NOT NULL,
|
|
apartment_id INTEGER NOT NULL,
|
|
FOREIGN KEY(volunteer_id) REFERENCES volunteers(id),
|
|
FOREIGN KEY(apartment_id) REFERENCES apartments(id)
|
|
);
|
|
"""
|
|
|
|
def add_apartment(self, volunteer_id: int, apartment_id: int):
|
|
query = """
|
|
INSERT INTO volunteer_apartments (volunteer_id, apartment_id)
|
|
VALUES (?, ?)
|
|
"""
|
|
self._execute(query, (volunteer_id, apartment_id))
|
|
|
|
def get_apartments(self, volunteer_id: int) -> List[int]:
|
|
query = """
|
|
SELECT apartment_id FROM volunteer_apartments
|
|
WHERE volunteer_id = ?
|
|
"""
|
|
results = self._execute(query, (volunteer_id,), fetch=True)
|
|
return [row[0] for row in results] if results else []
|