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)