main
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4from config import DB
5from database.kv import del_cf_kv, get_cf_kv, set_cf_kv
6from database.memory import del_memory_cache, get_memory_cache, set_memory_cache
7from database.r2 import del_cf_r2, get_cf_r2, set_cf_r2
8
9
10async def get_db(key: str) -> dict:
11 """Get data from database."""
12 if not key:
13 return {}
14 if kv := get_memory_cache(key):
15 return kv
16 if DB.ENGINE == "Cloudflare-KV":
17 return await get_cf_kv(key)
18 if DB.ENGINE == "Cloudflare-R2":
19 return await get_cf_r2(key)
20 return {}
21
22
23async def set_db(key: str, data: dict, ttl: int | None = None, metadata: dict | None = None) -> bool:
24 """Set data to database."""
25 success = False
26 if DB.ENGINE == "Cloudflare-KV":
27 success = await set_cf_kv(key, data, ttl=ttl)
28 if DB.ENGINE == "Cloudflare-R2":
29 success = await set_cf_r2(key, data, metadata, ttl=ttl)
30 if success:
31 set_memory_cache(key, data, ttl)
32 return success
33
34
35async def del_db(key: str):
36 """Delete data from database."""
37 if not key:
38 return
39 del_memory_cache(key)
40 if DB.ENGINE == "Cloudflare-KV":
41 await del_cf_kv(key)
42 if DB.ENGINE == "Cloudflare-R2":
43 await del_cf_r2(key)