Skip to content

初始化 D1 数据库

初始化数据库

打开 cloudflare控制台,选择 Workers & Pages -> D1 -> 创建(Create),点击创建数据库

d1

创建完成后,我们在 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', '必须登录才能上传');

最终执行完效果应该如下图

d2

基于 MIT 许可发布