* feat: add enabled column to UserFeatures and TeamFeatures for tri-state semantics - Add enabled Boolean column to UserFeatures model with default true - Add enabled Boolean column to TeamFeatures model with default true - Update FeaturesRepository to use tri-state semantics: - enabled=true: feature is explicitly enabled - enabled=false: feature is explicitly disabled (blocks inheritance) - No row: inherit from team/org level - Update SQL queries to check enabled=true for feature access - Add enableFeatureForTeam method to interface and implementation Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * update comments * add integration tests * add more test * select enabled only * no @default(true) * fix types and tests * add missing enabled * add missing enabled * rename enableFeatureForTeam to updateFeatureForTeam and support FeatureState * refactor: rename updateFeatureForTeam to setTeamFeatureState Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix integration test * fix tests * add more tests * add missing enabled --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
40 lines
875 B
TypeScript
40 lines
875 B
TypeScript
import type { PrismaClient } from "@calcom/prisma";
|
|
|
|
import type { TrpcSessionUser } from "../../../types";
|
|
import type { TAdminAssignFeatureToTeamSchema } from "./assignFeatureToTeam.schema";
|
|
|
|
type AssignFeatureOptions = {
|
|
ctx: {
|
|
user: NonNullable<TrpcSessionUser>;
|
|
prisma: PrismaClient;
|
|
};
|
|
input: TAdminAssignFeatureToTeamSchema;
|
|
};
|
|
|
|
export const assignFeatureToTeamHandler = async ({ ctx, input }: AssignFeatureOptions) => {
|
|
const { prisma, user } = ctx;
|
|
const { teamId, featureId } = input;
|
|
|
|
await prisma.teamFeatures.upsert({
|
|
where: {
|
|
teamId_featureId: {
|
|
teamId,
|
|
featureId,
|
|
},
|
|
},
|
|
create: {
|
|
teamId,
|
|
featureId,
|
|
assignedBy: `user:${user.id}`,
|
|
enabled: true,
|
|
},
|
|
update: {
|
|
enabled: true,
|
|
},
|
|
});
|
|
|
|
return { success: true };
|
|
};
|
|
|
|
export default assignFeatureToTeamHandler;
|