初始化 D1 数据库
初始化数据库
打开 cloudflare
控制台,选择 Workers & Pages
-> D1
-> 创建(Create)
,点击创建数据库
创建完成后,我们在 cloudflare
的控制台可以看到 D1
数据库
打开 Console
标签页,输入下面的内容,点击 Execute
执行
初始化用户表
sql
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
user_type TEXT NOT NULL DEFAULT 'user',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
CHECK(user_type IN ('user', 'admin'))
);
创建管理员账号(默认 用户名密码都是admin 之后可到后台进行修改)
sql
INSERT INTO users (username, email, password_hash, user_type)
VALUES ('admin', '[email protected] ', '$2a$10$OaC7gcRwbiyw7fe6/tmZAeDZ0j7q.U0xDEpEzpvVXgQofXdIPBgpi', 'admin');
初始化图片信息表
sql
CREATE TABLE images (
id TEXT PRIMARY KEY,
user_id INTEGER,
filename TEXT,
mime_type TEXT,
kv_key TEXT,
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 为 user_id 添加索引,以加速根据用户筛选图片的查询
CREATE INDEX IF NOT EXISTS idx_images_user_id ON images(user_id);
-- 为 upload_date 添加索引,以加速按上传日期排序的查询
CREATE INDEX IF NOT EXISTS idx_images_upload_date ON images(upload_date);
创建站点配置表并添加基本配置
sql
CREATE TABLE IF NOT EXISTS settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT NOT NULL UNIQUE,
value TEXT NOT NULL,
value_type TEXT NOT NULL DEFAULT 'string',
description TEXT DEFAULT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO settings (key, value, value_type, description)
VALUES ('enable_register', 'true', 'boolean', '是否启用用户注册');
INSERT INTO settings (key, value, value_type, description)
VALUES ('expiration_time', 1, 'integer', 'token过期时间');
INSERT INTO settings (key, value, value_type, description)
VALUES ('upload_require_auth', 'true', 'boolean', '必须登录才能上传');