# 建库 · 课堂演示件
#
# 作用：在本文件旁边建立 items.db，写入两张表与五件示例物资。
# 用法：直接运行。重复运行会先删掉旧库再重建，可用于重置练习环境。

import sqlite3
from pathlib import Path

DB = Path(__file__).with_name('items.db')

# ① 已有旧库先删掉，保证每次生成的内容一致
if DB.exists():
    DB.unlink()

conn = sqlite3.connect(DB)

# ② 物资表：一件物资一行。id 是主键，name 不允许重复
conn.execute('''
CREATE TABLE items (
    id   INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT    NOT NULL UNIQUE,
    note TEXT
)''')

# ③ 借还流水表：借一次记一行。item_id 指向 items 表的 id
conn.execute('''
CREATE TABLE records (
    id        INTEGER PRIMARY KEY AUTOINCREMENT,
    item_id   INTEGER NOT NULL,
    borrower  TEXT    NOT NULL,
    borrow_at TEXT    NOT NULL,
    return_at TEXT
)''')

# ④ 写入五件示例物资。问号是占位符，实际的值由后面那个括号提供
for name, note in [('无线话筒 A', '带电池'),
                   ('无线话筒 B', ''),
                   ('投影转接头', 'Type-C 转 HDMI'),
                   ('拖线板', '五米'),
                   ('三脚架', '')]:
    conn.execute('INSERT INTO items (name, note) VALUES (?, ?)', (name, note))

# ⑤ 提交：不写这一行，上面做的改动全部不算数
conn.commit()
conn.close()

print('已建立', DB.name)
print('两张表：items（物资台账）、records（借还流水）')
print('已写入 5 件物资，借还流水为空')
input('按回车键结束')
