(add): Drawing Form

This commit is contained in:
2026-06-25 22:22:13 -04:00
parent 9d6473d4bf
commit 1967b84e6e
13 changed files with 471 additions and 6 deletions
Binary file not shown.
+66
View File
@@ -0,0 +1,66 @@
from dataclasses import dataclass
from db import RepoTemplate
from .baskets import Basket
from system.auth import AuthRepo
from fastapi import APIRouter, Header
@dataclass
class DrawingLine:
prefix: str
b_id: int
description: str = ""
winning_ticket: int = 0
last_name: str = ""
first_name: str = ""
phone_number: str = ""
class DrawingRepo(RepoTemplate):
def get_all_drawing_lines(self):
self.cur.execute("SELECT * FROM drawing ORDER BY prefix, b_id")
results = self.cur.fetchall()
return [DrawingLine(*r) for r in results]
def get_prefix_drawing_lines(self, prefix: str):
self.cur.execute("SELECT * FROM drawing WHERE prefix = ? ORDER BY prefix, b_id", (prefix,))
results = self.cur.fetchall()
return [DrawingLine(*r) for r in results]
def get_single_drawing_line(self, prefix: str, b_id: int):
self.cur.execute("SELECT * FROM drawing WHERE prefix = ? AND b_id = ? ORDER BY prefix, b_id", (prefix, b_id))
results = self.cur.fetchall()
return [DrawingLine(*r) for r in results]
def get_range_drawing_lines(self, prefix: str, id_from: int, id_to: int):
self.cur.execute("SELECT * FROM drawing WHERE prefix = ? AND b_id BETWEEN ? AND ? ORDER BY prefix, b_id", (prefix, id_from, id_to))
results = self.cur.fetchall()
return [DrawingLine(*r) for r in results]
def post_drawing_lines(self, ds: list[Basket]):
for d in ds:
self.cur.execute("""INSERT INTO baskets (prefix, b_id, winning_ticket) VALUES (?, ?, ?) ON CONFLICT (prefix, b_id) DO UPDATE SET
winning_ticket = EXCLUDED.winning_ticket""", (d.prefix, d.b_id, d.winning_ticket))
self.conn.commit()
return ds
drawing_router = APIRouter(prefix="/api/drawing")
@drawing_router.get("")
def get_all_drawing_lines(tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return DrawingRepo().get_all_drawing_lines()
@drawing_router.get("/{prefix}")
def get_prefix_drawing_lines(prefix: str, tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return DrawingRepo().get_prefix_drawing_lines(prefix)
@drawing_router.get("/{prefix}/{b_id}")
def get_single_drawing_line(prefix: str, b_id: int, tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return DrawingRepo().get_single_drawing_line(prefix, b_id)
@drawing_router.get("/{prefix}/{id_from}/{id_to}")
def get_range_drawing_lines(prefix: str, id_from: int, id_to: int, tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return DrawingRepo().get_range_drawing_lines(prefix, id_from, id_to)
@drawing_router.post("")
def post_drawing_lines(ds: list[Basket], tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return DrawingRepo().post_drawing_lines(ds)