Files
ncd-fe/packages/pl-api/lib/entities/group-member.ts
nicole mikołajczyk fbbcbdce3f nicolium: groups migrations
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-02-22 20:08:16 +01:00

48 lines
892 B
TypeScript

import * as v from 'valibot';
import { accountSchema } from './account';
enum GroupRoles {
OWNER = 'owner',
ADMIN = 'admin',
MODERATOR = 'moderator',
USER = 'user',
}
/**
* @category Entity types
*/
type GroupRole = `${GroupRoles}`;
/**
* @category Schemas
*/
const groupMemberSchema = v.pipe(
v.any(),
v.transform((groupMember: any) => {
if (!groupMember.account) {
return {
id: groupMember.id,
account: groupMember,
role:
{
founder: 'owner',
admin: 'admin',
}[groupMember.role as string] || 'user',
};
}
}),
v.object({
id: v.string(),
account: accountSchema,
role: v.enum(GroupRoles),
}),
);
/**
* @category Entity types
*/
type GroupMember = v.InferOutput<typeof groupMemberSchema>;
export { groupMemberSchema, type GroupMember, GroupRoles, type GroupRole };