Files
varo-website/src/db/schema/teamMember.ts
bytedream ee8f595ecc
All checks were successful
deploy / build-and-deploy (/testvaro, /opt/website-test, website-test) (push) Successful in 22s
deploy / build-and-deploy (/varo, /opt/website, website) (push) Successful in 21s
add feedback and report things
2025-06-21 14:46:42 +02:00

50 lines
1.3 KiB
TypeScript

import { int, mysqlTable } from 'drizzle-orm/mysql-core';
import { user } from './user.ts';
import { team } from './team.ts';
import type { MySql2Database } from 'drizzle-orm/mysql2';
import { eq } from 'drizzle-orm';
type Database = MySql2Database<{ teamMember: typeof teamMember }>;
export const teamMember = mysqlTable('team_member', {
teamId: int('team_id')
.notNull()
.references(() => team.id),
userId: int('user_id')
.notNull()
.references(() => user.id)
});
export type AddTeamMemberReq = {
teamId: number;
userId: number;
};
export type DeleteTeamMemberByTeamIdReq = {
teamId: number;
};
export type GetTeamMembersByTeamIdReq = {
teamId: number;
};
export async function addTeamMember(db: Database, values: AddTeamMemberReq) {
const teamMemberIds = await db.insert(teamMember).values(values).$returningId();
return teamMemberIds[0];
}
export async function deleteTeamMemberByTeamId(db: Database, values: DeleteTeamMemberByTeamIdReq) {
await db.delete(teamMember).where(eq(teamMember.teamId, values.teamId));
}
export async function getTeamMembersByTeamId(db: Database, values: GetTeamMembersByTeamIdReq) {
return db
.select({
user: user
})
.from(teamMember)
.innerJoin(user, eq(teamMember.userId, user.id))
.where(eq(teamMember.teamId, values.teamId));
}