Spaces:
Sleeping
Sleeping
| 当然,以下是完整的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'; | |
| ``` |