zhaoyingbo f5ee6f8555
All checks were successful
CI Monitor MIflow / build-image (push) Successful in 45s
feat: 修改监控Stage的方式
2024-08-08 11:04:09 +00:00

58 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { DB } from "../../types/db"
import { managePb404 } from "../../utils/pbTools"
import pbClient from "../pbClient"
/**
* 根据提供的ID从数据库检索单个用户。
* @param {string} id - 要检索的用户的ID。
* @returns {Promise<DB.User | null>} - 如果找到返回解析为用户对象的promise如果未找到抛出404错误。
*/
const getOne = (id: string) =>
managePb404<DB.User>(() => pbClient.collection("user").getOne(id))
/**
* 根据提供的用户ID从数据库检索单个用户。
* @param {number} user_id - 要检索的用户的用户ID。
* @returns {Promise<DB.User | null>} - 如果找到返回解析为用户对象的promise如果未找到抛出404错误。
*/
const getOneByUserId = (user_id: number) =>
managePb404<DB.User>(() =>
pbClient.collection("user").getFirstListItem(`user_id="${user_id}"`, {
sort: "-created",
})
)
/**
* 在数据库中创建一个新用户。
* @param {Partial<DB.User>} data - 新用户的数据。
* @returns {Promise<DB.User>} - 返回解析为已创建用户对象的promise。
*/
const create = async (data: Partial<DB.User>) =>
await pbClient.collection("user").create<DB.User>(data)
/**
* 在数据库中插入或更新一个用户。
* 如果具有相同用户ID的用户已存在则更新现有用户。
* 如果具有相同用户ID的用户不存在则创建一个新用户。
* @param {Partial<DB.User>} data - 要插入或更新的用户数据。
* @returns {Promise<DB.User | null>} - 返回解析为插入或更新的用户对象的promise。如果数据不包含用户ID则返回null。
*/
const upsert = async (data: Partial<DB.User>): Promise<DB.User | null> => {
if (!data.user_id) return null
const userInfo = await getOneByUserId(data.user_id)
if (userInfo) return userInfo
return await create(data)
}
/**
* 用户模块提供了与数据库中的用户集合交互的函数。
*/
const user = {
create,
upsert,
getOne,
getOneByUserId,
}
export default user