Spaces:
Sleeping
Sleeping
| """ | |
| 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()) | |