Spaces:
Runtime error
Runtime error
| import sqlite3 | |
| import os | |
| DB_PATH = os.environ.get("DB_PATH", os.path.join(os.path.dirname(__file__), "shop.db")) | |
| def get_db(): | |
| conn = sqlite3.connect(DB_PATH) | |
| conn.row_factory = sqlite3.Row | |
| return conn | |
| def init_db(): | |
| conn = get_db() | |
| c = conn.cursor() | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS stickers ( | |
| id TEXT PRIMARY KEY, | |
| name TEXT NOT NULL, | |
| character TEXT NOT NULL, | |
| tier TEXT NOT NULL, | |
| price_cents INTEGER NOT NULL, | |
| stock INTEGER, -- NULL = unlimited | |
| sold INTEGER DEFAULT 0, | |
| image_path TEXT NOT NULL, | |
| description TEXT | |
| ) | |
| """) | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS purchases ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| discord_user_id TEXT NOT NULL, | |
| sticker_id TEXT NOT NULL, | |
| stripe_session_id TEXT UNIQUE, | |
| status TEXT DEFAULT 'pending', | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ) | |
| """) | |
| c.execute(""" | |
| CREATE TABLE IF NOT EXISTS inventory ( | |
| discord_user_id TEXT NOT NULL, | |
| sticker_id TEXT NOT NULL, | |
| acquired_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| PRIMARY KEY (discord_user_id, sticker_id) | |
| ) | |
| """) | |
| conn.commit() | |
| conn.close() | |
| print("Database initialized.") | |
| def seed_stickers(): | |
| stickers = [ | |
| # Tien - Musical (Standard & Limited) | |
| ("tien-default", "Tien", "Tien", "standard", 99, None, "/Musical/Tien.jpeg", "The jade elephant himself."), | |
| ("tien-dance", "Tien Dancing", "Tien", "limited", 299, 100, "/Musical/Tien-dance.jpeg", "Tien full of joy!"), | |
| ("tien-harmonica", "Tien Harmonica","Tien","standard", 99, None, "/Musical/Tien-harmonica.jpeg","Playing his favourite tune."), | |
| ("tien-playing", "Tien Playing", "Tien", "standard", 99, None, "/Musical/Tien-playing.jpeg", "Focused and creative."), | |
| ("tien-sitting", "Tien Chilling","Tien", "standard", 99, None, "/Musical/Tien-sitting.jpeg", "Just vibing."), | |
| ("tien-surprised", "Tien Surprised","Tien","limited", 299, 100, "/Musical/Tien-surprised.jpeg","!!!!"), | |
| ("tien-walking", "Tien Walking", "Tien", "standard", 99, None, "/Musical/Tien-walking.jpeg", "On the move."), | |
| ("tien-nobg", "Tien (Clean)", "Tien", "collector", 499, 50, "/Musical/Tien-nobackground.jpeg","Transparent background."), | |
| # Nishang - Delicate | |
| ("nishang-default", "Nishang", "Nishang","standard",99, None, "/Delicate/Nishang.jpeg", "Luminous and graceful."), | |
| ("nishang-original","Nishang Classic","Nishang","limited",299, 100, "/Delicate/Nishang-original.jpeg","The original render."), | |
| # Xiaohan - Ancient | |
| ("xiaohan-default", "Xiaohan", "Xiaohan","standard",99, None, "/Ancient/Xiaohan.jpeg", "The ancient dragon guide."), | |
| ("xiaohan-cliff", "Xiaohan Cliff","Xiaohan","limited", 299, 100, "/Ancient/Xiaohan-cliff.jpeg", "Epic cliff scene."), | |
| ("xiaohan-clouds", "Xiaohan Clouds","Xiaohan","limited",299, 100, "/Ancient/Xiaohan-clouds.jpeg", "Among the clouds."), | |
| ("xiaohan-valley", "Xiaohan Valley","Xiaohan","collector",499,50, "/Ancient/Xiaohan-valley.jpeg", "The great valley."), | |
| ("xiaohan-nobg", "Xiaohan (Clean)","Xiaohan","collector",499,50, "/Ancient/Xiaohan-nobackground.jpeg","Transparent background."), | |
| # Shi Yin | |
| ("shiyin-default", "Shi Yin", "Shi Yin","limited", 299, 100, "/Shi Yin/Shi Yin.jpeg", "Mysterious Shi Yin."), | |
| # Eternal Path Logo - Ultra Rare | |
| ("eternal-logo", "Eternal Path Logo","Eternal Path Media","ultra_rare",1499,10, | |
| "/brand/Eternal Path Brand.jpeg","Ultra rare — only 10 exist."), | |
| ] | |
| conn = get_db() | |
| c = conn.cursor() | |
| base = os.path.join(os.path.dirname(os.path.dirname(__file__)), "stickers", "assets") | |
| for s in stickers: | |
| sid, name, char, tier, price, stock, rel_path, desc = s | |
| full_path = os.path.join(base, rel_path.lstrip("/")) | |
| c.execute(""" | |
| INSERT OR IGNORE INTO stickers | |
| (id, name, character, tier, price_cents, stock, image_path, description) | |
| VALUES (?,?,?,?,?,?,?,?) | |
| """, (sid, name, char, tier, price, stock, full_path, desc)) | |
| conn.commit() | |
| conn.close() | |
| print("Stickers seeded.") | |
| if __name__ == "__main__": | |
| init_db() | |
| seed_stickers() | |