Build Dockerized MVP scaffold and records importer
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from uuid import UUID
|
||||
|
||||
from sqlalchemy import select
|
||||
|
||||
from .database import SessionLocal
|
||||
from .models import Bait, BaitKind, CatchReport, Fish, ModerationStatus, SourceType, Spot, Waterbody
|
||||
|
||||
|
||||
IDS = {
|
||||
"vyunok": UUID("10000000-0000-0000-0000-000000000001"),
|
||||
"kuori": UUID("10000000-0000-0000-0000-000000000002"),
|
||||
"pike": UUID("20000000-0000-0000-0000-000000000001"),
|
||||
"trout": UUID("20000000-0000-0000-0000-000000000002"),
|
||||
"spiker": UUID("30000000-0000-0000-0000-000000000001"),
|
||||
"shad": UUID("30000000-0000-0000-0000-000000000002"),
|
||||
"spot1": UUID("40000000-0000-0000-0000-000000000001"),
|
||||
"spot2": UUID("40000000-0000-0000-0000-000000000002"),
|
||||
}
|
||||
|
||||
|
||||
def seed() -> None:
|
||||
with SessionLocal.begin() as db:
|
||||
if db.scalar(select(Fish.id).limit(1)) is not None:
|
||||
return
|
||||
vyunok = Waterbody(id=IDS["vyunok"], slug="vyunok", name_ru="Вьюнок", unlock_level=1)
|
||||
kuori = Waterbody(id=IDS["kuori"], slug="kuori", name_ru="Куори", unlock_level=16)
|
||||
pike = Fish(id=IDS["pike"], slug="pike", name_ru="Щука", trophy_weight_g=10_000)
|
||||
trout = Fish(id=IDS["trout"], slug="lake-trout", name_ru="Озёрная форель", trophy_weight_g=10_000)
|
||||
spiker = Bait(id=IDS["spiker"], name="Spiker #2 01-015", normalized_name="spiker #2 01-015", kind=BaitKind.lure)
|
||||
shad = Bait(id=IDS["shad"], name="Salmon T1 Shad 12 005", normalized_name="salmon t1 shad 12 005", kind=BaitKind.lure)
|
||||
spot1 = Spot(id=IDS["spot1"], waterbody=vyunok, x=110, y=103, description="Кромка травы у северного берега")
|
||||
spot2 = Spot(id=IDS["spot2"], waterbody=kuori, x=85, y=92, description="Свальчик в глубину")
|
||||
db.add_all([vyunok, kuori, pike, trout, spiker, shad, spot1, spot2])
|
||||
now = datetime.now(timezone.utc)
|
||||
for index in range(12):
|
||||
db.add(CatchReport(
|
||||
fish=pike, spot=spot1, waterbody=vyunok, bait=spiker,
|
||||
weight_g=2_600 + index * 480, fishing_method="spinning",
|
||||
retrieve_method="равномерная", retrieve_speed=22,
|
||||
caught_at=now - timedelta(minutes=25 + index * 47),
|
||||
reported_at=now - timedelta(minutes=20 + index * 47),
|
||||
player_name=f"DemoPlayer{index % 7 + 1}", source_type=SourceType.manual_import,
|
||||
source_confidence=80 + index % 3 * 5, moderation_status=ModerationStatus.approved,
|
||||
))
|
||||
for index in range(5):
|
||||
db.add(CatchReport(
|
||||
fish=trout, spot=spot2, waterbody=kuori, bait=shad,
|
||||
weight_g=4_200 + index * 900, fishing_method="spinning",
|
||||
retrieve_method="ступенчатая", retrieve_speed=18,
|
||||
caught_at=now - timedelta(hours=2 + index * 4),
|
||||
reported_at=now - timedelta(hours=2 + index * 4),
|
||||
player_name=f"DemoAngler{index + 1}", source_type=SourceType.manual_import,
|
||||
source_confidence=85, moderation_status=ModerationStatus.approved,
|
||||
))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
seed()
|
||||
Reference in New Issue
Block a user