Spaces:
Sleeping
Sleeping
File size: 3,039 Bytes
daa9d8a |
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 |
当然,以下是完整的SQL语句,用于创建`api_names`、`api_keys`表,以及可选的`api_usage`表。这些表将支持存储API名称、API-KEY信息,并可选地记录API的使用情况。
### SQL 创建表的语句
```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 语句
```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';
``` |