70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
"""
|
|
PocketBase SDK
|
|
数据库操作封装,支持配置注入
|
|
"""
|
|
from typing import Optional
|
|
|
|
from pocketbase import PocketBase
|
|
|
|
|
|
class PocketBaseSDK:
|
|
"""PocketBase 客户端 SDK"""
|
|
|
|
def __init__(
|
|
self,
|
|
url: str,
|
|
admin_email: str,
|
|
admin_password: str,
|
|
):
|
|
self.url = url
|
|
self.admin_email = admin_email
|
|
self.admin_password = admin_password
|
|
self._client: Optional[PocketBase] = None
|
|
|
|
def get_client(self) -> PocketBase:
|
|
"""获取已认证的 PocketBase 客户端"""
|
|
if self._client is None:
|
|
self._client = PocketBase(self.url)
|
|
self._client.admins.auth_with_password(self.admin_email, self.admin_password)
|
|
return self._client
|
|
|
|
def collection(self, name: str):
|
|
"""获取集合"""
|
|
return self.get_client().collection(name)
|
|
|
|
def create_payment(self, user_id: str, pay_type: str, order_id: str, amount: int) -> dict:
|
|
"""创建支付记录"""
|
|
return self.collection("payments").create({
|
|
"user_id": user_id,
|
|
"type": pay_type,
|
|
"order_id": order_id,
|
|
"amount": amount,
|
|
})
|
|
|
|
def update_meetup_payment(
|
|
self,
|
|
user_id: str,
|
|
order_id: str,
|
|
amount: int,
|
|
) -> None:
|
|
"""更新或创建 meetup 支付记录"""
|
|
solan = self.collection("solan")
|
|
existing = solan.get_list(1, 1, {
|
|
"filter": f'user_id = "{user_id}"',
|
|
"sort": "-created",
|
|
})
|
|
if existing.items:
|
|
record_id = existing.items[0].id
|
|
solan.update(record_id, {
|
|
"type": "meetup",
|
|
"order_id": order_id,
|
|
"amount": amount,
|
|
})
|
|
else:
|
|
solan.create({
|
|
"user_id": user_id,
|
|
"type": "meetup",
|
|
"order_id": order_id,
|
|
"amount": amount,
|
|
})
|