Skip to content

Commit a4f6aca

Browse files
committed
refactor: 抽离 KV 模块
1 parent 7d56d9a commit a4f6aca

File tree

14 files changed

+530
-45
lines changed

14 files changed

+530
-45
lines changed

apps/qqbot/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
"build"
1313
],
1414
"dependencies": {
15+
"@deno/kv": "^0.8.3",
1516
"level": "^8.0.1",
1617
"puppeteer": "^23.4.0"
1718
},
1819
"devDependencies": {
20+
"@clansty/maibot-adapters": "workspace:^",
1921
"@clansty/maibot-core": "workspace:^",
2022
"@clansty/maibot-firm": "workspace:^",
2123
"@clansty/maibot-types": "workspace:^",

apps/qqbot/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import YAML from 'yaml';
44
import { BotAdapter } from './adapter/Bot';
55
import { buildBot } from '@clansty/maibot-core';
66
import { Env } from './types';
7-
import { LevelKV } from './adapter/LevelKV';
7+
import { LevelKV } from '@clansty/maibot-adapters/src/LevelKV';
88
import { Renderer } from './adapter/Renderer';
99

1010
fs.mkdirSync('data/cache', { recursive: true });

apps/qqofbot/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
"build"
1313
],
1414
"dependencies": {
15+
"@deno/kv": "^0.8.3",
1516
"level": "^8.0.1",
1617
"puppeteer": "^23.4.0"
1718
},
1819
"devDependencies": {
20+
"@clansty/maibot-adapters": "workspace:^",
1921
"@clansty/maibot-core": "workspace:^",
2022
"@clansty/maibot-firm": "workspace:^",
2123
"@clansty/maibot-types": "workspace:^",

apps/qqofbot/src/adapter/LevelKV.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

apps/qqofbot/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import YAML from 'yaml';
44
import { BotAdapter } from './adapter/Bot';
55
import { buildBot } from '@clansty/maibot-core';
66
import { Env } from './types';
7-
import { LevelKV } from './adapter/LevelKV';
7+
import { LevelKV } from '@clansty/maibot-adapters';
88
import { Renderer } from './adapter/Renderer';
99

1010
fs.mkdirSync('data/cache', { recursive: true });

docker-compose.yaml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
version: '3'
2+
3+
volumes:
4+
data:
5+
data-official:
6+
napcat-qq:
7+
napcat-config:
8+
9+
services:
10+
denokv:
11+
image: ghcr.io/denoland/denokv
12+
init: true
13+
volumes:
14+
- denokv-data:/data
15+
command: --sqlite-path /data/denokv.sqlite serve --access-token random-token
16+
ports:
17+
- "4512:4512"
18+
19+
napcat:
20+
environment:
21+
- ACCOUNT=3087530651
22+
- WS_ENABLE=true
23+
- NAPCAT_GID=1000
24+
- NAPCAT_UID=1000
25+
ports:
26+
- "6097:6099"
27+
mac_address: 02:42:AC:11:21:83
28+
restart: unless-stopped
29+
image: mlikiowa/napcat-docker
30+
dns: 11.11.1.1
31+
volumes:
32+
- napcat-qq:/app/.config/QQ
33+
- napcat-config:/app/napcat/config
34+
- data:/app/data
35+
labels:
36+
- traefik.enable=false
37+
stop_signal: SIGKILL
38+
39+
bot:
40+
restart: unless-stopped
41+
depends_on:
42+
- napcat
43+
image: gitea.c5y.moe/clansty/maibot-qq
44+
stop_signal: SIGKILL
45+
dns: 11.11.1.1
46+
volumes:
47+
- data:/app/data
48+
- /home/clansty/aquadx-bot.yaml:/app/env.yaml:ro
49+
labels:
50+
- traefik.enable=false
51+
cap_add:
52+
- SYS_ADMIN
53+
54+
bot-official:
55+
restart: unless-stopped
56+
image: gitea.c5y.moe/clansty/maibot-qq-official
57+
stop_signal: SIGKILL
58+
dns: 11.11.1.1
59+
volumes:
60+
- data-official:/app/data
61+
- /home/clansty/aquadx-bot.yaml:/app/env.yaml:ro
62+
labels:
63+
- traefik.enable=false
64+
cap_add:
65+
- SYS_ADMIN

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
"scripts": {
44
"dev:web": "pnpm run --filter=@clansty/maibot-web dev",
55
"dev:bot": "pnpm run --filter=@clansty/maibot-workers dev",
6-
"dev": "pnpm run --filter=@clansty/maibot-workers --filter=@clansty/maibot-web --stream --parallel dev",
7-
"deploy": "pnpm run --filter=@clansty/maibot-workers --filter=@clansty/maibot-onebot --filter=@clansty/maibot-qofbot --filter=@clansty/maibot-web --stream --parallel \"/^deploy.*/\" && pnpm run deploy:docker",
6+
"dev": "pnpm run --filter=@clansty/maibot-workers --filter=@clansty/maibot-web --parallel dev",
7+
"deploy": "pnpm run --filter=@clansty/maibot-workers --filter=@clansty/maibot-onebot --filter=@clansty/maibot-qofbot --filter=@clansty/maibot-web --parallel \"/^deploy.*/\" && pnpm run deploy:docker",
88
"deploy:docker": "curl -X POST -vL https://portainer.c5y.moe/api/stacks/webhooks/10d9fea3-43d2-46c3-811a-e65293d4d0cb",
99
"deploy:tg": "pnpm run --filter=@clansty/maibot-workers deploy",
10-
"deploy:qq": "pnpm run --filter=@clansty/maibot-onebot --filter=@clansty/maibot-qofbot deploy",
10+
"deploy:qq": "pnpm run --filter=@clansty/maibot-onebot --filter=@clansty/maibot-qofbot deploy && pnpm run deploy:docker",
1111
"deploy:web": "pnpm run --filter=@clansty/maibot-web deploy",
1212
"tail": "pnpm run --filter=@clansty/maibot-workers tail"
1313
},

packages/adapters/package.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"name": "@clansty/maibot-adapters",
3+
"version": "0.0.0",
4+
"type": "module",
5+
"private": true,
6+
"main": "src/index.ts",
7+
"types": "src/index.ts",
8+
"devDependencies": {
9+
"@clansty/maibot-types": "workspace:^",
10+
"@deno/kv": "^0.8.3",
11+
"level": "^8.0.1"
12+
}
13+
}

packages/adapters/src/DenoKV.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { KVStorage } from '@clansty/maibot-types';
2+
import { openKv, Kv } from '@deno/kv';
3+
4+
export class DenoKV extends KVStorage {
5+
private readonly kv: Promise<Kv>;
6+
7+
constructor(url: string) {
8+
super();
9+
this.kv = openKv(url);
10+
}
11+
12+
async get<T>(key: string): Promise<T | undefined> {
13+
try {
14+
const kv = await this.kv;
15+
const res = await kv.get<T>([key]);
16+
return res.value;
17+
} catch {
18+
return undefined;
19+
}
20+
}
21+
22+
async set<T>(key: string, value: T, ttl?: number): Promise<void> {
23+
const kv = await this.kv;
24+
await kv.set([key], value, { expireIn: ttl ? ttl * 1000 : undefined });
25+
}
26+
27+
async delete(key: string): Promise<void> {
28+
const kv = await this.kv;
29+
await kv.delete([key]);
30+
}
31+
}

0 commit comments

Comments
 (0)