File size: 4,564 Bytes
9bb83f4
 
 
87ba1a2
9bb83f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87ba1a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9bb83f4
 
 
87ba1a2
9bb83f4
 
87ba1a2
 
9bb83f4
 
 
 
87ba1a2
9bb83f4
 
 
87ba1a2
9bb83f4
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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()