api-mapper / sql.md
tanbushi's picture
db
daa9d8a
|
raw
history blame
3.04 kB

当然,以下是完整的SQL语句,用于创建api_namesapi_keys表,以及可选的api_usage表。这些表将支持存储API名称、API-KEY信息,并可选地记录API的使用情况。

SQL 创建表的语句

-- 创建 users 表
DROP TABLE IF EXISTS "users";
CREATE TABLE "users" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
  "username" TEXT NOT NULL,
  "password" TEXT NOT NULL,
  "email" TEXT NOT NULL,
  "nikename" TEXT,
  "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
  "updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
  UNIQUE ("username" ASC),
  UNIQUE ("email" ASC)
);

-- 创建api_groups表
CREATE TABLE api_groups (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  group_name TEXT NOT NULL UNIQUE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 创建api_names表
CREATE TABLE api_names (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  api_name TEXT NOT NULL UNIQUE,
  api_group_id INTEGER,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE SET NULL
);

-- 创建api_keys表
CREATE TABLE api_keys (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  api_group_id INTEGER NOT NULL,
  api_key TEXT NOT NULL,
  category TEXT NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE CASCADE
);

-- 创建user_api_keys表
CREATE TABLE user_api_keys (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_api_key TEXT NOT NULL,
  user_id INTEGER,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 创建api_usage表(如果需要)
CREATE TABLE api_usage (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_api_key_id INTEGER,
  api_key_id INTEGER,
  request_count INTEGER DEFAULT 0,
  last_used DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_api_key_id) REFERENCES user_api_keys(id),
  FOREIGN KEY (api_key_id) REFERENCES api_keys(id)
);

说明

  • api_names:存储唯一的API名称。
  • api_keys:存储每个API名称对应的多个API-KEY,包括分类信息。api_names_id作为外键,关联到api_names表。
  • user_api_keys:存储用户的API-KEY。
  • api_usage(可选):记录API的使用情况,包括请求次数和最后使用时间。这个表可以用来监控API的使用情况,帮助管理API-KEY的使用限额。

这些SQL语句假设你使用的是MySQL数据库。如果你使用的是其他类型的数据库(如PostgreSQL、SQLite等),可能需要对SQL语句进行适当的调整。如果有任何问题或需要进一步的帮助,请随时告诉我。

通过 api_name 查询 api_key 的 SQL 语句

SELECT ak.api_key
FROM api_keys ak
JOIN api_groups ag ON ak.api_group_id = ag.id
JOIN api_names an ON an.api_group_id = ag.id
WHERE an.api_name = 'your_api_name';