pocketbase-tools
Version:
A TypeScript toolkit for PocketBase, featuring a standard service/action/types layered structure. It provides interfaces and implementations for common business logic such as users, products, company profiles, and file utilities, making it suitable for se
67 lines (66 loc) • 2.15 kB
JavaScript
import { userCollect } from "./base";
import { withErrorHandling } from "./utils/errorHandler";
import { logger } from "./utils/logger";
function toUser(record) {
// 自动映射所有 User 字段,防止遗漏,并为 undefined 字段提供默认值
return {
collectionId: record.collectionId ?? undefined,
collectionName: record.collectionName ?? undefined,
id: record.id ?? undefined,
email: record.email ?? "",
name: record.name ?? undefined,
emailVisibility: record.emailVisibility ?? undefined,
avatar: record.avatar ?? undefined,
verified: record.verified ?? undefined,
created: record.created ?? undefined,
updated: record.updated ?? undefined,
};
}
/**
* 获取所有用户列表
* @param options 可选过滤
*/
export async function getAllUsers(options = {}) {
return withErrorHandling("获取所有用户列表", async () => {
const users = await userCollect.getFullList({
filter: options.filter,
sort: options.sort || "-created",
expand: options.expand?.join(","),
});
logger.success(`成功获取用户列表`, {
total: users.length,
filter: options.filter,
});
return users.map(toUser);
});
}
/**
* 添加用户
*/
export async function addUser(user) {
return withErrorHandling("添加用户", async () => {
const result = await userCollect.create(user);
logger.success("添加用户成功", result);
return toUser(result);
});
}
/**
* 更新用户
*/
export async function updateUser(id, updatedFields) {
return withErrorHandling("更新用户", async () => {
const updated = await userCollect.update(id, updatedFields);
logger.success("用户更新成功", updated);
return toUser(updated);
});
}
/**
* 删除用户
*/
export async function deleteUser(id) {
return withErrorHandling("删除用户", async () => {
const deleted = await userCollect.delete(id);
logger.success("用户删除成功", deleted);
return !!deleted;
});
}