""" Populate physical location data for the 7 Kopkit outlets. Run once: cd python .\venv\Scripts\python.exe scripts\populate_locations.py """ import asyncio import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from dotenv import load_dotenv load_dotenv(os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), ".env" )) from sqlalchemy import update from config.database_config import async_session_factory, init_db from models.outlet_model import Outlet # ── Location data for each Kopkit branch ───────────────────────────────────── LOCATIONS = { "Kopkit Jati": { "location": "Jl. Jati, Padang Timur, Kota Padang", "description": "Outlet di area Jati, kawasan kampus dan perkantoran Padang Timur.", }, "Kopkit Veteran": { "location": "Jl. Veteran, Padang Utara, Kota Padang", "description": "Outlet di Jl. Veteran, area perumahan dan komersial Padang Utara.", }, "Kopkit Ulak Karang": { "location": "Ulak Karang, Padang Utara, Kota Padang", "description": "Outlet di kawasan Ulak Karang, area hunian padat dan komersial.", }, "Kopkit Sutomo": { "location": "Jl. Sutomo, Padang Selatan, Kota Padang", "description": "Outlet di Jl. Sutomo, pusat kota dekat area perdagangan.", }, "Kopkit Gunung Pangilun": { "location": "Gunung Pangilun, Padang Utara, Kota Padang", "description": "Outlet di area Gunung Pangilun, kawasan wisata dan rekreasi.", }, "Kopkit Fabriek Bloc Tabing": { "location": "Fabriek Bloc, Tabing, Koto Tangah, Kota Padang", "description": "Outlet di kompleks Fabriek Bloc Tabing, area co-working dan kreatif.", }, "Kopkit Pondok": { "location": "Pondok, Kota Padang", "description": "Outlet di kawasan Pondok, area residensial kota Padang.", }, } async def main(): await init_db() async with async_session_factory() as db: updated = 0 for name, data in LOCATIONS.items(): result = await db.execute( update(Outlet) .where(Outlet.name == name) .values( location=data["location"], description=data["description"], ) ) if result.rowcount > 0: updated += 1 print(f" [OK] {name} -> {data['location']}") else: print(f" [--] {name} not found in DB (skipped)") await db.commit() print(f"\nUpdated {updated}/{len(LOCATIONS)} outlets.") if __name__ == "__main__": asyncio.run(main())