File size: 4,041 Bytes
a1d11a9
 
148535d
a1d11a9
148535d
 
 
a1d11a9
 
 
fa36d82
a1d11a9
148535d
 
 
a1d11a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148535d
 
a1d11a9
fa36d82
a1d11a9
 
 
 
 
 
 
fa36d82
a1d11a9
 
 
 
 
 
 
148535d
a1d11a9
 
 
 
 
 
148535d
 
a1d11a9
fa36d82
a1d11a9
 
 
 
 
148535d
a1d11a9
148535d
 
 
 
7d90b6b
148535d
7d90b6b
148535d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a1d11a9
 
 
 
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
101
102
103
104
105
106
"""
Insert sample data into the database for testing.
Run from backend:  python -m db.test_functions.create_data
Requires DATABASE_URL in backend/.env.

Uses umbrella Manga + MangaSource + Chapters (per provider_id). Optional external_manga_id
on save_page_translation links a provider catalog id (e.g. MangaDex UUID).
"""

import db
from db.const import PROVIDER_LOCAL, PROVIDER_MANGADEX

# Demo external ids (MangaDex uses UUID strings; local can use legacy-* from DB or omit)
NARUTO_MANGADEX_ID = "931b3112-7b75-43e4-a13f-908f0a251ae2"  # example placeholder UUID


def _bubbles(*pairs: tuple[str, str]) -> list[dict]:
    """Create fake text segments from (original, translated) pairs."""
    result = []
    for i, (orig, trans) in enumerate(pairs):
        result.append({
            "bubble_index": i,
            "x1": 10.0 + i * 5,
            "y1": 20.0 + i * 40,
            "x2": 100.0,
            "y2": 50.0 + i * 40,
            "original_text": orig,
            "translated_text": trans,
        })
    return result


def seed():
    db.init_db()

    # Umbrella manga 1: One Piece — local files only (no API id → omit external_manga_id, DB uses legacy-*)
    db.save_page_translation(
        provider_id=PROVIDER_LOCAL,
        manga_title="One Piece",
        chapter_number=1.0,
        page_number=1,
        bubbles=_bubbles(("海賊王に俺はなる!", "I'm gonna be King of the Pirates!")),
        language_code="en",
    )
    db.save_page_translation(
        provider_id=PROVIDER_LOCAL,
        manga_title="One Piece",
        chapter_number=1.0,
        page_number=2,
        bubbles=_bubbles(("麦わらのルフィ", "Monkey D. Luffy"), ("ゼファ", "Zeff")),
        language_code="en",
    )
    db.save_page_translation(
        provider_id=PROVIDER_LOCAL,
        manga_title="One Piece",
        chapter_number=2.0,
        page_number=1,
        bubbles=_bubbles(("冒険の始まり", "The adventure begins")),
        language_code="en",
    )

    # Umbrella manga 2: Naruto — MangaDex catalog id stored in manga_source via external_manga_id
    db.save_page_translation(
        provider_id=PROVIDER_MANGADEX,
        manga_title="Naruto",
        chapter_number=1.0,
        page_number=1,
        bubbles=_bubbles(("忍たま乱太郎", "Ninja Academy"), ("うずまきナルト", "Uzumaki Naruto")),
        language_code="en",
        external_manga_id=NARUTO_MANGADEX_ID,
    )

    print("Seed data inserted.\n")

    # --- Queries: umbrella manga (no provider on Manga row) ---
    mangas = db.list_mangas(order_by="updated_at", order_desc=True)
    print("=== list_mangas (umbrella) ===")
    for m in mangas:
        print(f"  id={m.id}  title={m.manga_title!r}  updated_at={m.updated_at}")

    # --- Chapters are scoped by provider: same title can exist per source ---
    print("\n=== list_chapters('One Piece', provider_id=local) ===")
    for c in db.list_chapters("One Piece", provider_id=PROVIDER_LOCAL):
        print(f"  ch.id={c.id}  provider={c.provider_id!r}  ch={c.chapter_number}  updated={c.updated_at}")

    print("\n=== list_chapters('Naruto', provider_id=mangadex) ===")
    for c in db.list_chapters("Naruto", provider_id=PROVIDER_MANGADEX):
        print(f"  ch.id={c.id}  provider={c.provider_id!r}  ch={c.chapter_number}  updated={c.updated_at}")

    # Resolve umbrella id from provider + external catalog id
    mid = db.resolve_manga_id_by_source(PROVIDER_MANGADEX, NARUTO_MANGADEX_ID)
    print("\n=== resolve_manga_id_by_source(mangadex, external_manga_id) ===")
    print(f"  umbrella manga_id for Naruto sample UUID: {mid}")

    # Sample segment query (provider on chapter)
    segs = db.get_chapter_segments(PROVIDER_LOCAL, "One Piece", 1.0)
    print("\n=== get_chapter_segments(local, 'One Piece', 1.0) ===")
    print(f"  segment count: {len(segs)}")
    if segs:
        s0 = segs[0]
        print(f"  first: provider_id={s0.provider_id!r}  page={s0.page_number}  translated={s0.translated_text!r}")


if __name__ == "__main__":
    seed()