b0044ed1a2
This PR is a bit messy: adding graphql schema adding create company creation on company select on People page some frontend refactoring to be continued --------- Co-authored-by: Charles Bochet <charles@twenty.com>
796 lines
55 KiB
TypeScript
796 lines
55 KiB
TypeScript
import { ClassType } from "type-graphql";
|
|
import * as tslib from "tslib";
|
|
import * as crudResolvers from "./resolvers/crud/resolvers-crud.index";
|
|
import * as argsTypes from "./resolvers/crud/args.index";
|
|
import * as actionResolvers from "./resolvers/crud/resolvers-actions.index";
|
|
import * as relationResolvers from "./resolvers/relations/resolvers.index";
|
|
import * as models from "./models";
|
|
import * as outputTypes from "./resolvers/outputs";
|
|
import * as inputTypes from "./resolvers/inputs";
|
|
|
|
export type MethodDecoratorOverrideFn = (decorators: MethodDecorator[]) => MethodDecorator[];
|
|
|
|
const crudResolversMap = {
|
|
User: crudResolvers.UserCrudResolver,
|
|
Workspace: crudResolvers.WorkspaceCrudResolver,
|
|
WorkspaceMember: crudResolvers.WorkspaceMemberCrudResolver,
|
|
Company: crudResolvers.CompanyCrudResolver,
|
|
Person: crudResolvers.PersonCrudResolver,
|
|
RefreshToken: crudResolvers.RefreshTokenCrudResolver
|
|
};
|
|
const actionResolversMap = {
|
|
User: {
|
|
aggregateUser: actionResolvers.AggregateUserResolver,
|
|
createManyUser: actionResolvers.CreateManyUserResolver,
|
|
createOneUser: actionResolvers.CreateOneUserResolver,
|
|
deleteManyUser: actionResolvers.DeleteManyUserResolver,
|
|
deleteOneUser: actionResolvers.DeleteOneUserResolver,
|
|
findFirstUser: actionResolvers.FindFirstUserResolver,
|
|
findFirstUserOrThrow: actionResolvers.FindFirstUserOrThrowResolver,
|
|
users: actionResolvers.FindManyUserResolver,
|
|
user: actionResolvers.FindUniqueUserResolver,
|
|
getUser: actionResolvers.FindUniqueUserOrThrowResolver,
|
|
groupByUser: actionResolvers.GroupByUserResolver,
|
|
updateManyUser: actionResolvers.UpdateManyUserResolver,
|
|
updateOneUser: actionResolvers.UpdateOneUserResolver,
|
|
upsertOneUser: actionResolvers.UpsertOneUserResolver
|
|
},
|
|
Workspace: {
|
|
aggregateWorkspace: actionResolvers.AggregateWorkspaceResolver,
|
|
createManyWorkspace: actionResolvers.CreateManyWorkspaceResolver,
|
|
createOneWorkspace: actionResolvers.CreateOneWorkspaceResolver,
|
|
deleteManyWorkspace: actionResolvers.DeleteManyWorkspaceResolver,
|
|
deleteOneWorkspace: actionResolvers.DeleteOneWorkspaceResolver,
|
|
findFirstWorkspace: actionResolvers.FindFirstWorkspaceResolver,
|
|
findFirstWorkspaceOrThrow: actionResolvers.FindFirstWorkspaceOrThrowResolver,
|
|
workspaces: actionResolvers.FindManyWorkspaceResolver,
|
|
workspace: actionResolvers.FindUniqueWorkspaceResolver,
|
|
getWorkspace: actionResolvers.FindUniqueWorkspaceOrThrowResolver,
|
|
groupByWorkspace: actionResolvers.GroupByWorkspaceResolver,
|
|
updateManyWorkspace: actionResolvers.UpdateManyWorkspaceResolver,
|
|
updateOneWorkspace: actionResolvers.UpdateOneWorkspaceResolver,
|
|
upsertOneWorkspace: actionResolvers.UpsertOneWorkspaceResolver
|
|
},
|
|
WorkspaceMember: {
|
|
aggregateWorkspaceMember: actionResolvers.AggregateWorkspaceMemberResolver,
|
|
createManyWorkspaceMember: actionResolvers.CreateManyWorkspaceMemberResolver,
|
|
createOneWorkspaceMember: actionResolvers.CreateOneWorkspaceMemberResolver,
|
|
deleteManyWorkspaceMember: actionResolvers.DeleteManyWorkspaceMemberResolver,
|
|
deleteOneWorkspaceMember: actionResolvers.DeleteOneWorkspaceMemberResolver,
|
|
findFirstWorkspaceMember: actionResolvers.FindFirstWorkspaceMemberResolver,
|
|
findFirstWorkspaceMemberOrThrow: actionResolvers.FindFirstWorkspaceMemberOrThrowResolver,
|
|
workspaceMembers: actionResolvers.FindManyWorkspaceMemberResolver,
|
|
workspaceMember: actionResolvers.FindUniqueWorkspaceMemberResolver,
|
|
getWorkspaceMember: actionResolvers.FindUniqueWorkspaceMemberOrThrowResolver,
|
|
groupByWorkspaceMember: actionResolvers.GroupByWorkspaceMemberResolver,
|
|
updateManyWorkspaceMember: actionResolvers.UpdateManyWorkspaceMemberResolver,
|
|
updateOneWorkspaceMember: actionResolvers.UpdateOneWorkspaceMemberResolver,
|
|
upsertOneWorkspaceMember: actionResolvers.UpsertOneWorkspaceMemberResolver
|
|
},
|
|
Company: {
|
|
aggregateCompany: actionResolvers.AggregateCompanyResolver,
|
|
createManyCompany: actionResolvers.CreateManyCompanyResolver,
|
|
createOneCompany: actionResolvers.CreateOneCompanyResolver,
|
|
deleteManyCompany: actionResolvers.DeleteManyCompanyResolver,
|
|
deleteOneCompany: actionResolvers.DeleteOneCompanyResolver,
|
|
findFirstCompany: actionResolvers.FindFirstCompanyResolver,
|
|
findFirstCompanyOrThrow: actionResolvers.FindFirstCompanyOrThrowResolver,
|
|
companies: actionResolvers.FindManyCompanyResolver,
|
|
company: actionResolvers.FindUniqueCompanyResolver,
|
|
getCompany: actionResolvers.FindUniqueCompanyOrThrowResolver,
|
|
groupByCompany: actionResolvers.GroupByCompanyResolver,
|
|
updateManyCompany: actionResolvers.UpdateManyCompanyResolver,
|
|
updateOneCompany: actionResolvers.UpdateOneCompanyResolver,
|
|
upsertOneCompany: actionResolvers.UpsertOneCompanyResolver
|
|
},
|
|
Person: {
|
|
aggregatePerson: actionResolvers.AggregatePersonResolver,
|
|
createManyPerson: actionResolvers.CreateManyPersonResolver,
|
|
createOnePerson: actionResolvers.CreateOnePersonResolver,
|
|
deleteManyPerson: actionResolvers.DeleteManyPersonResolver,
|
|
deleteOnePerson: actionResolvers.DeleteOnePersonResolver,
|
|
findFirstPerson: actionResolvers.FindFirstPersonResolver,
|
|
findFirstPersonOrThrow: actionResolvers.FindFirstPersonOrThrowResolver,
|
|
people: actionResolvers.FindManyPersonResolver,
|
|
person: actionResolvers.FindUniquePersonResolver,
|
|
getPerson: actionResolvers.FindUniquePersonOrThrowResolver,
|
|
groupByPerson: actionResolvers.GroupByPersonResolver,
|
|
updateManyPerson: actionResolvers.UpdateManyPersonResolver,
|
|
updateOnePerson: actionResolvers.UpdateOnePersonResolver,
|
|
upsertOnePerson: actionResolvers.UpsertOnePersonResolver
|
|
},
|
|
RefreshToken: {
|
|
aggregateRefreshToken: actionResolvers.AggregateRefreshTokenResolver,
|
|
createManyRefreshToken: actionResolvers.CreateManyRefreshTokenResolver,
|
|
createOneRefreshToken: actionResolvers.CreateOneRefreshTokenResolver,
|
|
deleteManyRefreshToken: actionResolvers.DeleteManyRefreshTokenResolver,
|
|
deleteOneRefreshToken: actionResolvers.DeleteOneRefreshTokenResolver,
|
|
findFirstRefreshToken: actionResolvers.FindFirstRefreshTokenResolver,
|
|
findFirstRefreshTokenOrThrow: actionResolvers.FindFirstRefreshTokenOrThrowResolver,
|
|
refreshTokens: actionResolvers.FindManyRefreshTokenResolver,
|
|
refreshToken: actionResolvers.FindUniqueRefreshTokenResolver,
|
|
getRefreshToken: actionResolvers.FindUniqueRefreshTokenOrThrowResolver,
|
|
groupByRefreshToken: actionResolvers.GroupByRefreshTokenResolver,
|
|
updateManyRefreshToken: actionResolvers.UpdateManyRefreshTokenResolver,
|
|
updateOneRefreshToken: actionResolvers.UpdateOneRefreshTokenResolver,
|
|
upsertOneRefreshToken: actionResolvers.UpsertOneRefreshTokenResolver
|
|
}
|
|
};
|
|
const crudResolversInfo = {
|
|
User: ["aggregateUser", "createManyUser", "createOneUser", "deleteManyUser", "deleteOneUser", "findFirstUser", "findFirstUserOrThrow", "users", "user", "getUser", "groupByUser", "updateManyUser", "updateOneUser", "upsertOneUser"],
|
|
Workspace: ["aggregateWorkspace", "createManyWorkspace", "createOneWorkspace", "deleteManyWorkspace", "deleteOneWorkspace", "findFirstWorkspace", "findFirstWorkspaceOrThrow", "workspaces", "workspace", "getWorkspace", "groupByWorkspace", "updateManyWorkspace", "updateOneWorkspace", "upsertOneWorkspace"],
|
|
WorkspaceMember: ["aggregateWorkspaceMember", "createManyWorkspaceMember", "createOneWorkspaceMember", "deleteManyWorkspaceMember", "deleteOneWorkspaceMember", "findFirstWorkspaceMember", "findFirstWorkspaceMemberOrThrow", "workspaceMembers", "workspaceMember", "getWorkspaceMember", "groupByWorkspaceMember", "updateManyWorkspaceMember", "updateOneWorkspaceMember", "upsertOneWorkspaceMember"],
|
|
Company: ["aggregateCompany", "createManyCompany", "createOneCompany", "deleteManyCompany", "deleteOneCompany", "findFirstCompany", "findFirstCompanyOrThrow", "companies", "company", "getCompany", "groupByCompany", "updateManyCompany", "updateOneCompany", "upsertOneCompany"],
|
|
Person: ["aggregatePerson", "createManyPerson", "createOnePerson", "deleteManyPerson", "deleteOnePerson", "findFirstPerson", "findFirstPersonOrThrow", "people", "person", "getPerson", "groupByPerson", "updateManyPerson", "updateOnePerson", "upsertOnePerson"],
|
|
RefreshToken: ["aggregateRefreshToken", "createManyRefreshToken", "createOneRefreshToken", "deleteManyRefreshToken", "deleteOneRefreshToken", "findFirstRefreshToken", "findFirstRefreshTokenOrThrow", "refreshTokens", "refreshToken", "getRefreshToken", "groupByRefreshToken", "updateManyRefreshToken", "updateOneRefreshToken", "upsertOneRefreshToken"]
|
|
};
|
|
const argsInfo = {
|
|
AggregateUserArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyUserArgs: ["data", "skipDuplicates"],
|
|
CreateOneUserArgs: ["data"],
|
|
DeleteManyUserArgs: ["where"],
|
|
DeleteOneUserArgs: ["where"],
|
|
FindFirstUserArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstUserOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyUserArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniqueUserArgs: ["where"],
|
|
FindUniqueUserOrThrowArgs: ["where"],
|
|
GroupByUserArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyUserArgs: ["data", "where"],
|
|
UpdateOneUserArgs: ["data", "where"],
|
|
UpsertOneUserArgs: ["where", "create", "update"],
|
|
AggregateWorkspaceArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyWorkspaceArgs: ["data", "skipDuplicates"],
|
|
CreateOneWorkspaceArgs: ["data"],
|
|
DeleteManyWorkspaceArgs: ["where"],
|
|
DeleteOneWorkspaceArgs: ["where"],
|
|
FindFirstWorkspaceArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstWorkspaceOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyWorkspaceArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniqueWorkspaceArgs: ["where"],
|
|
FindUniqueWorkspaceOrThrowArgs: ["where"],
|
|
GroupByWorkspaceArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyWorkspaceArgs: ["data", "where"],
|
|
UpdateOneWorkspaceArgs: ["data", "where"],
|
|
UpsertOneWorkspaceArgs: ["where", "create", "update"],
|
|
AggregateWorkspaceMemberArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyWorkspaceMemberArgs: ["data", "skipDuplicates"],
|
|
CreateOneWorkspaceMemberArgs: ["data"],
|
|
DeleteManyWorkspaceMemberArgs: ["where"],
|
|
DeleteOneWorkspaceMemberArgs: ["where"],
|
|
FindFirstWorkspaceMemberArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstWorkspaceMemberOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyWorkspaceMemberArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniqueWorkspaceMemberArgs: ["where"],
|
|
FindUniqueWorkspaceMemberOrThrowArgs: ["where"],
|
|
GroupByWorkspaceMemberArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyWorkspaceMemberArgs: ["data", "where"],
|
|
UpdateOneWorkspaceMemberArgs: ["data", "where"],
|
|
UpsertOneWorkspaceMemberArgs: ["where", "create", "update"],
|
|
AggregateCompanyArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyCompanyArgs: ["data", "skipDuplicates"],
|
|
CreateOneCompanyArgs: ["data"],
|
|
DeleteManyCompanyArgs: ["where"],
|
|
DeleteOneCompanyArgs: ["where"],
|
|
FindFirstCompanyArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstCompanyOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyCompanyArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniqueCompanyArgs: ["where"],
|
|
FindUniqueCompanyOrThrowArgs: ["where"],
|
|
GroupByCompanyArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyCompanyArgs: ["data", "where"],
|
|
UpdateOneCompanyArgs: ["data", "where"],
|
|
UpsertOneCompanyArgs: ["where", "create", "update"],
|
|
AggregatePersonArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyPersonArgs: ["data", "skipDuplicates"],
|
|
CreateOnePersonArgs: ["data"],
|
|
DeleteManyPersonArgs: ["where"],
|
|
DeleteOnePersonArgs: ["where"],
|
|
FindFirstPersonArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstPersonOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyPersonArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniquePersonArgs: ["where"],
|
|
FindUniquePersonOrThrowArgs: ["where"],
|
|
GroupByPersonArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyPersonArgs: ["data", "where"],
|
|
UpdateOnePersonArgs: ["data", "where"],
|
|
UpsertOnePersonArgs: ["where", "create", "update"],
|
|
AggregateRefreshTokenArgs: ["where", "orderBy", "cursor", "take", "skip"],
|
|
CreateManyRefreshTokenArgs: ["data", "skipDuplicates"],
|
|
CreateOneRefreshTokenArgs: ["data"],
|
|
DeleteManyRefreshTokenArgs: ["where"],
|
|
DeleteOneRefreshTokenArgs: ["where"],
|
|
FindFirstRefreshTokenArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindFirstRefreshTokenOrThrowArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindManyRefreshTokenArgs: ["where", "orderBy", "cursor", "take", "skip", "distinct"],
|
|
FindUniqueRefreshTokenArgs: ["where"],
|
|
FindUniqueRefreshTokenOrThrowArgs: ["where"],
|
|
GroupByRefreshTokenArgs: ["where", "orderBy", "by", "having", "take", "skip"],
|
|
UpdateManyRefreshTokenArgs: ["data", "where"],
|
|
UpdateOneRefreshTokenArgs: ["data", "where"],
|
|
UpsertOneRefreshTokenArgs: ["where", "create", "update"]
|
|
};
|
|
|
|
type ResolverModelNames = keyof typeof crudResolversMap;
|
|
|
|
type ModelResolverActionNames<
|
|
TModel extends ResolverModelNames
|
|
> = keyof typeof crudResolversMap[TModel]["prototype"];
|
|
|
|
export type ResolverActionsConfig<
|
|
TModel extends ResolverModelNames
|
|
> = Partial<Record<ModelResolverActionNames<TModel>, MethodDecorator[] | MethodDecoratorOverrideFn>>
|
|
& {
|
|
_all?: MethodDecorator[];
|
|
_query?: MethodDecorator[];
|
|
_mutation?: MethodDecorator[];
|
|
};
|
|
|
|
export type ResolversEnhanceMap = {
|
|
[TModel in ResolverModelNames]?: ResolverActionsConfig<TModel>;
|
|
};
|
|
|
|
export function applyResolversEnhanceMap(
|
|
resolversEnhanceMap: ResolversEnhanceMap,
|
|
) {
|
|
const mutationOperationPrefixes = [
|
|
"createOne", "createMany", "deleteOne", "updateOne", "deleteMany", "updateMany", "upsertOne"
|
|
];
|
|
for (const resolversEnhanceMapKey of Object.keys(resolversEnhanceMap)) {
|
|
const modelName = resolversEnhanceMapKey as keyof typeof resolversEnhanceMap;
|
|
const crudTarget = crudResolversMap[modelName].prototype;
|
|
const resolverActionsConfig = resolversEnhanceMap[modelName]!;
|
|
const actionResolversConfig = actionResolversMap[modelName];
|
|
const allActionsDecorators = resolverActionsConfig._all;
|
|
const resolverActionNames = crudResolversInfo[modelName as keyof typeof crudResolversInfo];
|
|
for (const resolverActionName of resolverActionNames) {
|
|
const maybeDecoratorsOrFn = resolverActionsConfig[
|
|
resolverActionName as keyof typeof resolverActionsConfig
|
|
] as MethodDecorator[] | MethodDecoratorOverrideFn | undefined;
|
|
const isWriteOperation = mutationOperationPrefixes.some(prefix => resolverActionName.startsWith(prefix));
|
|
const operationKindDecorators = isWriteOperation ? resolverActionsConfig._mutation : resolverActionsConfig._query;
|
|
const mainDecorators = [
|
|
...allActionsDecorators ?? [],
|
|
...operationKindDecorators ?? [],
|
|
]
|
|
let decorators: MethodDecorator[];
|
|
if (typeof maybeDecoratorsOrFn === "function") {
|
|
decorators = maybeDecoratorsOrFn(mainDecorators);
|
|
} else {
|
|
decorators = [...mainDecorators, ...maybeDecoratorsOrFn ?? []];
|
|
}
|
|
const actionTarget = (actionResolversConfig[
|
|
resolverActionName as keyof typeof actionResolversConfig
|
|
] as Function).prototype;
|
|
tslib.__decorate(decorators, crudTarget, resolverActionName, null);
|
|
tslib.__decorate(decorators, actionTarget, resolverActionName, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
type ArgsTypesNames = keyof typeof argsTypes;
|
|
|
|
type ArgFieldNames<TArgsType extends ArgsTypesNames> = Exclude<
|
|
keyof typeof argsTypes[TArgsType]["prototype"],
|
|
number | symbol
|
|
>;
|
|
|
|
type ArgFieldsConfig<
|
|
TArgsType extends ArgsTypesNames
|
|
> = FieldsConfig<ArgFieldNames<TArgsType>>;
|
|
|
|
export type ArgConfig<TArgsType extends ArgsTypesNames> = {
|
|
class?: ClassDecorator[];
|
|
fields?: ArgFieldsConfig<TArgsType>;
|
|
};
|
|
|
|
export type ArgsTypesEnhanceMap = {
|
|
[TArgsType in ArgsTypesNames]?: ArgConfig<TArgsType>;
|
|
};
|
|
|
|
export function applyArgsTypesEnhanceMap(
|
|
argsTypesEnhanceMap: ArgsTypesEnhanceMap,
|
|
) {
|
|
for (const argsTypesEnhanceMapKey of Object.keys(argsTypesEnhanceMap)) {
|
|
const argsTypeName = argsTypesEnhanceMapKey as keyof typeof argsTypesEnhanceMap;
|
|
const typeConfig = argsTypesEnhanceMap[argsTypeName]!;
|
|
const typeClass = argsTypes[argsTypeName];
|
|
const typeTarget = typeClass.prototype;
|
|
applyTypeClassEnhanceConfig(
|
|
typeConfig,
|
|
typeClass,
|
|
typeTarget,
|
|
argsInfo[argsTypeName as keyof typeof argsInfo],
|
|
);
|
|
}
|
|
}
|
|
|
|
const relationResolversMap = {
|
|
User: relationResolvers.UserRelationsResolver,
|
|
Workspace: relationResolvers.WorkspaceRelationsResolver,
|
|
WorkspaceMember: relationResolvers.WorkspaceMemberRelationsResolver,
|
|
Company: relationResolvers.CompanyRelationsResolver,
|
|
Person: relationResolvers.PersonRelationsResolver,
|
|
RefreshToken: relationResolvers.RefreshTokenRelationsResolver
|
|
};
|
|
const relationResolversInfo = {
|
|
User: ["WorkspaceMember", "companies", "RefreshTokens"],
|
|
Workspace: ["WorkspaceMember", "companies", "people"],
|
|
WorkspaceMember: ["user", "workspace"],
|
|
Company: ["accountOwner", "people", "workspace"],
|
|
Person: ["company", "workspace"],
|
|
RefreshToken: ["user"]
|
|
};
|
|
|
|
type RelationResolverModelNames = keyof typeof relationResolversMap;
|
|
|
|
type RelationResolverActionNames<
|
|
TModel extends RelationResolverModelNames
|
|
> = keyof typeof relationResolversMap[TModel]["prototype"];
|
|
|
|
export type RelationResolverActionsConfig<TModel extends RelationResolverModelNames>
|
|
= Partial<Record<RelationResolverActionNames<TModel>, MethodDecorator[] | MethodDecoratorOverrideFn>>
|
|
& { _all?: MethodDecorator[] };
|
|
|
|
export type RelationResolversEnhanceMap = {
|
|
[TModel in RelationResolverModelNames]?: RelationResolverActionsConfig<TModel>;
|
|
};
|
|
|
|
export function applyRelationResolversEnhanceMap(
|
|
relationResolversEnhanceMap: RelationResolversEnhanceMap,
|
|
) {
|
|
for (const relationResolversEnhanceMapKey of Object.keys(relationResolversEnhanceMap)) {
|
|
const modelName = relationResolversEnhanceMapKey as keyof typeof relationResolversEnhanceMap;
|
|
const relationResolverTarget = relationResolversMap[modelName].prototype;
|
|
const relationResolverActionsConfig = relationResolversEnhanceMap[modelName]!;
|
|
const allActionsDecorators = relationResolverActionsConfig._all ?? [];
|
|
const relationResolverActionNames = relationResolversInfo[modelName as keyof typeof relationResolversInfo];
|
|
for (const relationResolverActionName of relationResolverActionNames) {
|
|
const maybeDecoratorsOrFn = relationResolverActionsConfig[
|
|
relationResolverActionName as keyof typeof relationResolverActionsConfig
|
|
] as MethodDecorator[] | MethodDecoratorOverrideFn | undefined;
|
|
let decorators: MethodDecorator[];
|
|
if (typeof maybeDecoratorsOrFn === "function") {
|
|
decorators = maybeDecoratorsOrFn(allActionsDecorators);
|
|
} else {
|
|
decorators = [...allActionsDecorators, ...maybeDecoratorsOrFn ?? []];
|
|
}
|
|
tslib.__decorate(decorators, relationResolverTarget, relationResolverActionName, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
type TypeConfig = {
|
|
class?: ClassDecorator[];
|
|
fields?: FieldsConfig;
|
|
};
|
|
|
|
export type PropertyDecoratorOverrideFn = (decorators: PropertyDecorator[]) => PropertyDecorator[];
|
|
|
|
type FieldsConfig<TTypeKeys extends string = string> = Partial<
|
|
Record<TTypeKeys, PropertyDecorator[] | PropertyDecoratorOverrideFn>
|
|
> & { _all?: PropertyDecorator[] };
|
|
|
|
function applyTypeClassEnhanceConfig<
|
|
TEnhanceConfig extends TypeConfig,
|
|
TType extends object
|
|
>(
|
|
enhanceConfig: TEnhanceConfig,
|
|
typeClass: ClassType<TType>,
|
|
typePrototype: TType,
|
|
typeFieldNames: string[]
|
|
) {
|
|
if (enhanceConfig.class) {
|
|
tslib.__decorate(enhanceConfig.class, typeClass);
|
|
}
|
|
if (enhanceConfig.fields) {
|
|
const allFieldsDecorators = enhanceConfig.fields._all ?? [];
|
|
for (const typeFieldName of typeFieldNames) {
|
|
const maybeDecoratorsOrFn = enhanceConfig.fields[
|
|
typeFieldName
|
|
] as PropertyDecorator[] | PropertyDecoratorOverrideFn | undefined;
|
|
let decorators: PropertyDecorator[];
|
|
if (typeof maybeDecoratorsOrFn === "function") {
|
|
decorators = maybeDecoratorsOrFn(allFieldsDecorators);
|
|
} else {
|
|
decorators = [...allFieldsDecorators, ...maybeDecoratorsOrFn ?? []];
|
|
}
|
|
tslib.__decorate(decorators, typePrototype, typeFieldName, void 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
const modelsInfo = {
|
|
User: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata"],
|
|
Workspace: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMember: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
Company: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
Person: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
RefreshToken: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"]
|
|
};
|
|
|
|
type ModelNames = keyof typeof models;
|
|
|
|
type ModelFieldNames<TModel extends ModelNames> = Exclude<
|
|
keyof typeof models[TModel]["prototype"],
|
|
number | symbol
|
|
>;
|
|
|
|
type ModelFieldsConfig<TModel extends ModelNames> = FieldsConfig<
|
|
ModelFieldNames<TModel>
|
|
>;
|
|
|
|
export type ModelConfig<TModel extends ModelNames> = {
|
|
class?: ClassDecorator[];
|
|
fields?: ModelFieldsConfig<TModel>;
|
|
};
|
|
|
|
export type ModelsEnhanceMap = {
|
|
[TModel in ModelNames]?: ModelConfig<TModel>;
|
|
};
|
|
|
|
export function applyModelsEnhanceMap(modelsEnhanceMap: ModelsEnhanceMap) {
|
|
for (const modelsEnhanceMapKey of Object.keys(modelsEnhanceMap)) {
|
|
const modelName = modelsEnhanceMapKey as keyof typeof modelsEnhanceMap;
|
|
const modelConfig = modelsEnhanceMap[modelName]!;
|
|
const modelClass = models[modelName];
|
|
const modelTarget = modelClass.prototype;
|
|
applyTypeClassEnhanceConfig(
|
|
modelConfig,
|
|
modelClass,
|
|
modelTarget,
|
|
modelsInfo[modelName as keyof typeof modelsInfo],
|
|
);
|
|
}
|
|
}
|
|
|
|
const outputsInfo = {
|
|
AggregateUser: ["_count", "_min", "_max"],
|
|
UserGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "_count", "_min", "_max"],
|
|
AggregateWorkspace: ["_count", "_min", "_max"],
|
|
WorkspaceGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "_count", "_min", "_max"],
|
|
AggregateWorkspaceMember: ["_count", "_min", "_max"],
|
|
WorkspaceMemberGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId", "_count", "_min", "_max"],
|
|
AggregateCompany: ["_count", "_avg", "_sum", "_min", "_max"],
|
|
CompanyGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId", "_count", "_avg", "_sum", "_min", "_max"],
|
|
AggregatePerson: ["_count", "_min", "_max"],
|
|
PersonGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId", "_count", "_min", "_max"],
|
|
AggregateRefreshToken: ["_count", "_min", "_max"],
|
|
RefreshTokenGroupBy: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId", "_count", "_min", "_max"],
|
|
AffectedRowsOutput: ["count"],
|
|
UserCount: ["companies", "RefreshTokens"],
|
|
UserCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "_all"],
|
|
UserMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified"],
|
|
UserMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified"],
|
|
WorkspaceCount: ["WorkspaceMember", "companies", "people"],
|
|
WorkspaceCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "_all"],
|
|
WorkspaceMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMemberCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId", "_all"],
|
|
WorkspaceMemberMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
WorkspaceMemberMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
CompanyCount: ["people"],
|
|
CompanyCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId", "_all"],
|
|
CompanyAvgAggregate: ["employees"],
|
|
CompanySumAggregate: ["employees"],
|
|
CompanyMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
CompanyMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
PersonCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId", "_all"],
|
|
PersonMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
PersonMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
RefreshTokenCountAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId", "_all"],
|
|
RefreshTokenMinAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
RefreshTokenMaxAggregate: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"]
|
|
};
|
|
|
|
type OutputTypesNames = keyof typeof outputTypes;
|
|
|
|
type OutputTypeFieldNames<TOutput extends OutputTypesNames> = Exclude<
|
|
keyof typeof outputTypes[TOutput]["prototype"],
|
|
number | symbol
|
|
>;
|
|
|
|
type OutputTypeFieldsConfig<
|
|
TOutput extends OutputTypesNames
|
|
> = FieldsConfig<OutputTypeFieldNames<TOutput>>;
|
|
|
|
export type OutputTypeConfig<TOutput extends OutputTypesNames> = {
|
|
class?: ClassDecorator[];
|
|
fields?: OutputTypeFieldsConfig<TOutput>;
|
|
};
|
|
|
|
export type OutputTypesEnhanceMap = {
|
|
[TOutput in OutputTypesNames]?: OutputTypeConfig<TOutput>;
|
|
};
|
|
|
|
export function applyOutputTypesEnhanceMap(
|
|
outputTypesEnhanceMap: OutputTypesEnhanceMap,
|
|
) {
|
|
for (const outputTypeEnhanceMapKey of Object.keys(outputTypesEnhanceMap)) {
|
|
const outputTypeName = outputTypeEnhanceMapKey as keyof typeof outputTypesEnhanceMap;
|
|
const typeConfig = outputTypesEnhanceMap[outputTypeName]!;
|
|
const typeClass = outputTypes[outputTypeName];
|
|
const typeTarget = typeClass.prototype;
|
|
applyTypeClassEnhanceConfig(
|
|
typeConfig,
|
|
typeClass,
|
|
typeTarget,
|
|
outputsInfo[outputTypeName as keyof typeof outputsInfo],
|
|
);
|
|
}
|
|
}
|
|
|
|
const inputsInfo = {
|
|
UserWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies", "RefreshTokens"],
|
|
UserOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies", "RefreshTokens"],
|
|
UserWhereUniqueInput: ["id", "email"],
|
|
UserOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "_count", "_max", "_min"],
|
|
UserScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata"],
|
|
WorkspaceWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies", "people"],
|
|
WorkspaceOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies", "people"],
|
|
WorkspaceWhereUniqueInput: ["id", "domainName"],
|
|
WorkspaceOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "_count", "_max", "_min"],
|
|
WorkspaceScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMemberWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId", "user", "workspace"],
|
|
WorkspaceMemberOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId", "user", "workspace"],
|
|
WorkspaceMemberWhereUniqueInput: ["id", "userId"],
|
|
WorkspaceMemberOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId", "_count", "_max", "_min"],
|
|
WorkspaceMemberScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
CompanyWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId", "accountOwner", "people", "workspace"],
|
|
CompanyOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId", "accountOwner", "people", "workspace"],
|
|
CompanyWhereUniqueInput: ["id"],
|
|
CompanyOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId", "_count", "_avg", "_max", "_min", "_sum"],
|
|
CompanyScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
PersonWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId", "company", "workspace"],
|
|
PersonOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId", "company", "workspace"],
|
|
PersonWhereUniqueInput: ["id"],
|
|
PersonOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId", "_count", "_max", "_min"],
|
|
PersonScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
RefreshTokenWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId", "user"],
|
|
RefreshTokenOrderByWithRelationInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId", "user"],
|
|
RefreshTokenWhereUniqueInput: ["id"],
|
|
RefreshTokenOrderByWithAggregationInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId", "_count", "_max", "_min"],
|
|
RefreshTokenScalarWhereWithAggregatesInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
UserCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies", "RefreshTokens"],
|
|
UserUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies", "RefreshTokens"],
|
|
UserCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata"],
|
|
UserUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata"],
|
|
WorkspaceCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies", "people"],
|
|
WorkspaceUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies", "people"],
|
|
WorkspaceCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMemberCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "user", "workspace"],
|
|
WorkspaceMemberUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "user", "workspace"],
|
|
WorkspaceMemberCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
WorkspaceMemberUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt"],
|
|
CompanyCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "people", "workspace"],
|
|
CompanyUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "people", "workspace"],
|
|
CompanyCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
CompanyUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees"],
|
|
PersonCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "company", "workspace"],
|
|
PersonUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "company", "workspace"],
|
|
PersonCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
PersonUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city"],
|
|
RefreshTokenCreateInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "user"],
|
|
RefreshTokenUpdateInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "user"],
|
|
RefreshTokenCreateManyInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
RefreshTokenUpdateManyMutationInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken"],
|
|
StringFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "mode", "not"],
|
|
DateTimeFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
DateTimeNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
BoolFilter: ["equals", "not"],
|
|
StringNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "mode", "not"],
|
|
JsonNullableFilter: ["equals", "path", "string_contains", "string_starts_with", "string_ends_with", "array_contains", "array_starts_with", "array_ends_with", "lt", "lte", "gt", "gte", "not"],
|
|
WorkspaceMemberRelationFilter: ["is", "isNot"],
|
|
CompanyListRelationFilter: ["every", "some", "none"],
|
|
RefreshTokenListRelationFilter: ["every", "some", "none"],
|
|
CompanyOrderByRelationAggregateInput: ["_count"],
|
|
RefreshTokenOrderByRelationAggregateInput: ["_count"],
|
|
UserCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata"],
|
|
UserMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified"],
|
|
UserMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified"],
|
|
StringWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "mode", "not", "_count", "_min", "_max"],
|
|
DateTimeWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_min", "_max"],
|
|
DateTimeNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_min", "_max"],
|
|
BoolWithAggregatesFilter: ["equals", "not", "_count", "_min", "_max"],
|
|
StringNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "mode", "not", "_count", "_min", "_max"],
|
|
JsonNullableWithAggregatesFilter: ["equals", "path", "string_contains", "string_starts_with", "string_ends_with", "array_contains", "array_starts_with", "array_ends_with", "lt", "lte", "gt", "gte", "not", "_count", "_min", "_max"],
|
|
WorkspaceMemberListRelationFilter: ["every", "some", "none"],
|
|
PersonListRelationFilter: ["every", "some", "none"],
|
|
WorkspaceMemberOrderByRelationAggregateInput: ["_count"],
|
|
PersonOrderByRelationAggregateInput: ["_count"],
|
|
WorkspaceCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
WorkspaceMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName"],
|
|
UserRelationFilter: ["is", "isNot"],
|
|
WorkspaceRelationFilter: ["is", "isNot"],
|
|
WorkspaceMemberCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
WorkspaceMemberMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
WorkspaceMemberMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
IntNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
CompanyCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
CompanyAvgOrderByAggregateInput: ["employees"],
|
|
CompanyMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
CompanyMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
CompanySumOrderByAggregateInput: ["employees"],
|
|
IntNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_avg", "_sum", "_min", "_max"],
|
|
CompanyRelationFilter: ["is", "isNot"],
|
|
PersonCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
PersonMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
PersonMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
RefreshTokenCountOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
RefreshTokenMaxOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
RefreshTokenMinOrderByAggregateInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
WorkspaceMemberCreateNestedOneWithoutUserInput: ["create", "connectOrCreate", "connect"],
|
|
CompanyCreateNestedManyWithoutAccountOwnerInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
RefreshTokenCreateNestedManyWithoutUserInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
StringFieldUpdateOperationsInput: ["set"],
|
|
DateTimeFieldUpdateOperationsInput: ["set"],
|
|
NullableDateTimeFieldUpdateOperationsInput: ["set"],
|
|
BoolFieldUpdateOperationsInput: ["set"],
|
|
NullableStringFieldUpdateOperationsInput: ["set"],
|
|
WorkspaceMemberUpdateOneWithoutUserNestedInput: ["create", "connectOrCreate", "upsert", "disconnect", "delete", "connect", "update"],
|
|
CompanyUpdateManyWithoutAccountOwnerNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
RefreshTokenUpdateManyWithoutUserNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
WorkspaceMemberCreateNestedManyWithoutWorkspaceInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
CompanyCreateNestedManyWithoutWorkspaceInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
PersonCreateNestedManyWithoutWorkspaceInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
WorkspaceMemberUpdateManyWithoutWorkspaceNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
CompanyUpdateManyWithoutWorkspaceNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
PersonUpdateManyWithoutWorkspaceNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
UserCreateNestedOneWithoutWorkspaceMemberInput: ["create", "connectOrCreate", "connect"],
|
|
WorkspaceCreateNestedOneWithoutWorkspaceMemberInput: ["create", "connectOrCreate", "connect"],
|
|
UserUpdateOneRequiredWithoutWorkspaceMemberNestedInput: ["create", "connectOrCreate", "upsert", "connect", "update"],
|
|
WorkspaceUpdateOneRequiredWithoutWorkspaceMemberNestedInput: ["create", "connectOrCreate", "upsert", "connect", "update"],
|
|
UserCreateNestedOneWithoutCompaniesInput: ["create", "connectOrCreate", "connect"],
|
|
PersonCreateNestedManyWithoutCompanyInput: ["create", "connectOrCreate", "createMany", "connect"],
|
|
WorkspaceCreateNestedOneWithoutCompaniesInput: ["create", "connectOrCreate", "connect"],
|
|
NullableIntFieldUpdateOperationsInput: ["set", "increment", "decrement", "multiply", "divide"],
|
|
UserUpdateOneWithoutCompaniesNestedInput: ["create", "connectOrCreate", "upsert", "disconnect", "delete", "connect", "update"],
|
|
PersonUpdateManyWithoutCompanyNestedInput: ["create", "connectOrCreate", "upsert", "createMany", "set", "disconnect", "delete", "connect", "update", "updateMany", "deleteMany"],
|
|
WorkspaceUpdateOneRequiredWithoutCompaniesNestedInput: ["create", "connectOrCreate", "upsert", "connect", "update"],
|
|
CompanyCreateNestedOneWithoutPeopleInput: ["create", "connectOrCreate", "connect"],
|
|
WorkspaceCreateNestedOneWithoutPeopleInput: ["create", "connectOrCreate", "connect"],
|
|
CompanyUpdateOneWithoutPeopleNestedInput: ["create", "connectOrCreate", "upsert", "disconnect", "delete", "connect", "update"],
|
|
WorkspaceUpdateOneRequiredWithoutPeopleNestedInput: ["create", "connectOrCreate", "upsert", "connect", "update"],
|
|
UserCreateNestedOneWithoutRefreshTokensInput: ["create", "connectOrCreate", "connect"],
|
|
UserUpdateOneRequiredWithoutRefreshTokensNestedInput: ["create", "connectOrCreate", "upsert", "connect", "update"],
|
|
NestedStringFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "not"],
|
|
NestedDateTimeFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
NestedDateTimeNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
NestedBoolFilter: ["equals", "not"],
|
|
NestedStringNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "not"],
|
|
NestedStringWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "not", "_count", "_min", "_max"],
|
|
NestedIntFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
NestedDateTimeWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_min", "_max"],
|
|
NestedDateTimeNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_min", "_max"],
|
|
NestedIntNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
NestedBoolWithAggregatesFilter: ["equals", "not", "_count", "_min", "_max"],
|
|
NestedStringNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "contains", "startsWith", "endsWith", "not", "_count", "_min", "_max"],
|
|
NestedJsonNullableFilter: ["equals", "path", "string_contains", "string_starts_with", "string_ends_with", "array_contains", "array_starts_with", "array_ends_with", "lt", "lte", "gt", "gte", "not"],
|
|
NestedIntNullableWithAggregatesFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not", "_count", "_avg", "_sum", "_min", "_max"],
|
|
NestedFloatNullableFilter: ["equals", "in", "notIn", "lt", "lte", "gt", "gte", "not"],
|
|
WorkspaceMemberCreateWithoutUserInput: ["id", "createdAt", "updatedAt", "deletedAt", "workspace"],
|
|
WorkspaceMemberCreateOrConnectWithoutUserInput: ["where", "create"],
|
|
CompanyCreateWithoutAccountOwnerInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "people", "workspace"],
|
|
CompanyCreateOrConnectWithoutAccountOwnerInput: ["where", "create"],
|
|
CompanyCreateManyAccountOwnerInputEnvelope: ["data", "skipDuplicates"],
|
|
RefreshTokenCreateWithoutUserInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken"],
|
|
RefreshTokenCreateOrConnectWithoutUserInput: ["where", "create"],
|
|
RefreshTokenCreateManyUserInputEnvelope: ["data", "skipDuplicates"],
|
|
WorkspaceMemberUpsertWithoutUserInput: ["update", "create"],
|
|
WorkspaceMemberUpdateWithoutUserInput: ["id", "createdAt", "updatedAt", "deletedAt", "workspace"],
|
|
CompanyUpsertWithWhereUniqueWithoutAccountOwnerInput: ["where", "update", "create"],
|
|
CompanyUpdateWithWhereUniqueWithoutAccountOwnerInput: ["where", "data"],
|
|
CompanyUpdateManyWithWhereWithoutAccountOwnerInput: ["where", "data"],
|
|
CompanyScalarWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId", "workspaceId"],
|
|
RefreshTokenUpsertWithWhereUniqueWithoutUserInput: ["where", "update", "create"],
|
|
RefreshTokenUpdateWithWhereUniqueWithoutUserInput: ["where", "data"],
|
|
RefreshTokenUpdateManyWithWhereWithoutUserInput: ["where", "data"],
|
|
RefreshTokenScalarWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "refreshToken", "userId"],
|
|
WorkspaceMemberCreateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "user"],
|
|
WorkspaceMemberCreateOrConnectWithoutWorkspaceInput: ["where", "create"],
|
|
WorkspaceMemberCreateManyWorkspaceInputEnvelope: ["data", "skipDuplicates"],
|
|
CompanyCreateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "people"],
|
|
CompanyCreateOrConnectWithoutWorkspaceInput: ["where", "create"],
|
|
CompanyCreateManyWorkspaceInputEnvelope: ["data", "skipDuplicates"],
|
|
PersonCreateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "company"],
|
|
PersonCreateOrConnectWithoutWorkspaceInput: ["where", "create"],
|
|
PersonCreateManyWorkspaceInputEnvelope: ["data", "skipDuplicates"],
|
|
WorkspaceMemberUpsertWithWhereUniqueWithoutWorkspaceInput: ["where", "update", "create"],
|
|
WorkspaceMemberUpdateWithWhereUniqueWithoutWorkspaceInput: ["where", "data"],
|
|
WorkspaceMemberUpdateManyWithWhereWithoutWorkspaceInput: ["where", "data"],
|
|
WorkspaceMemberScalarWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "userId", "workspaceId"],
|
|
CompanyUpsertWithWhereUniqueWithoutWorkspaceInput: ["where", "update", "create"],
|
|
CompanyUpdateWithWhereUniqueWithoutWorkspaceInput: ["where", "data"],
|
|
CompanyUpdateManyWithWhereWithoutWorkspaceInput: ["where", "data"],
|
|
PersonUpsertWithWhereUniqueWithoutWorkspaceInput: ["where", "update", "create"],
|
|
PersonUpdateWithWhereUniqueWithoutWorkspaceInput: ["where", "data"],
|
|
PersonUpdateManyWithWhereWithoutWorkspaceInput: ["where", "data"],
|
|
PersonScalarWhereInput: ["AND", "OR", "NOT", "id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId", "workspaceId"],
|
|
UserCreateWithoutWorkspaceMemberInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "companies", "RefreshTokens"],
|
|
UserCreateOrConnectWithoutWorkspaceMemberInput: ["where", "create"],
|
|
WorkspaceCreateWithoutWorkspaceMemberInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "companies", "people"],
|
|
WorkspaceCreateOrConnectWithoutWorkspaceMemberInput: ["where", "create"],
|
|
UserUpsertWithoutWorkspaceMemberInput: ["update", "create"],
|
|
UserUpdateWithoutWorkspaceMemberInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "companies", "RefreshTokens"],
|
|
WorkspaceUpsertWithoutWorkspaceMemberInput: ["update", "create"],
|
|
WorkspaceUpdateWithoutWorkspaceMemberInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "companies", "people"],
|
|
UserCreateWithoutCompaniesInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "RefreshTokens"],
|
|
UserCreateOrConnectWithoutCompaniesInput: ["where", "create"],
|
|
PersonCreateWithoutCompanyInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "workspace"],
|
|
PersonCreateOrConnectWithoutCompanyInput: ["where", "create"],
|
|
PersonCreateManyCompanyInputEnvelope: ["data", "skipDuplicates"],
|
|
WorkspaceCreateWithoutCompaniesInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "people"],
|
|
WorkspaceCreateOrConnectWithoutCompaniesInput: ["where", "create"],
|
|
UserUpsertWithoutCompaniesInput: ["update", "create"],
|
|
UserUpdateWithoutCompaniesInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "RefreshTokens"],
|
|
PersonUpsertWithWhereUniqueWithoutCompanyInput: ["where", "update", "create"],
|
|
PersonUpdateWithWhereUniqueWithoutCompanyInput: ["where", "data"],
|
|
PersonUpdateManyWithWhereWithoutCompanyInput: ["where", "data"],
|
|
WorkspaceUpsertWithoutCompaniesInput: ["update", "create"],
|
|
WorkspaceUpdateWithoutCompaniesInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "people"],
|
|
CompanyCreateWithoutPeopleInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "workspace"],
|
|
CompanyCreateOrConnectWithoutPeopleInput: ["where", "create"],
|
|
WorkspaceCreateWithoutPeopleInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies"],
|
|
WorkspaceCreateOrConnectWithoutPeopleInput: ["where", "create"],
|
|
CompanyUpsertWithoutPeopleInput: ["update", "create"],
|
|
CompanyUpdateWithoutPeopleInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "workspace"],
|
|
WorkspaceUpsertWithoutPeopleInput: ["update", "create"],
|
|
WorkspaceUpdateWithoutPeopleInput: ["id", "createdAt", "updatedAt", "deletedAt", "domainName", "displayName", "WorkspaceMember", "companies"],
|
|
UserCreateWithoutRefreshTokensInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies"],
|
|
UserCreateOrConnectWithoutRefreshTokensInput: ["where", "create"],
|
|
UserUpsertWithoutRefreshTokensInput: ["update", "create"],
|
|
UserUpdateWithoutRefreshTokensInput: ["id", "createdAt", "updatedAt", "deletedAt", "lastSeen", "disabled", "displayName", "email", "avatarUrl", "locale", "phoneNumber", "passwordHash", "emailVerified", "metadata", "WorkspaceMember", "companies"],
|
|
CompanyCreateManyAccountOwnerInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "workspaceId"],
|
|
RefreshTokenCreateManyUserInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken"],
|
|
CompanyUpdateWithoutAccountOwnerInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "people", "workspace"],
|
|
RefreshTokenUpdateWithoutUserInput: ["id", "createdAt", "updatedAt", "deletedAt", "refreshToken"],
|
|
WorkspaceMemberCreateManyWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "userId"],
|
|
CompanyCreateManyWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwnerId"],
|
|
PersonCreateManyWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "companyId"],
|
|
WorkspaceMemberUpdateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "user"],
|
|
CompanyUpdateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "name", "domainName", "address", "employees", "accountOwner", "people"],
|
|
PersonUpdateWithoutWorkspaceInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "company"],
|
|
PersonCreateManyCompanyInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "workspaceId"],
|
|
PersonUpdateWithoutCompanyInput: ["id", "createdAt", "updatedAt", "deletedAt", "firstname", "lastname", "email", "phone", "city", "workspace"]
|
|
};
|
|
|
|
type InputTypesNames = keyof typeof inputTypes;
|
|
|
|
type InputTypeFieldNames<TInput extends InputTypesNames> = Exclude<
|
|
keyof typeof inputTypes[TInput]["prototype"],
|
|
number | symbol
|
|
>;
|
|
|
|
type InputTypeFieldsConfig<
|
|
TInput extends InputTypesNames
|
|
> = FieldsConfig<InputTypeFieldNames<TInput>>;
|
|
|
|
export type InputTypeConfig<TInput extends InputTypesNames> = {
|
|
class?: ClassDecorator[];
|
|
fields?: InputTypeFieldsConfig<TInput>;
|
|
};
|
|
|
|
export type InputTypesEnhanceMap = {
|
|
[TInput in InputTypesNames]?: InputTypeConfig<TInput>;
|
|
};
|
|
|
|
export function applyInputTypesEnhanceMap(
|
|
inputTypesEnhanceMap: InputTypesEnhanceMap,
|
|
) {
|
|
for (const inputTypeEnhanceMapKey of Object.keys(inputTypesEnhanceMap)) {
|
|
const inputTypeName = inputTypeEnhanceMapKey as keyof typeof inputTypesEnhanceMap;
|
|
const typeConfig = inputTypesEnhanceMap[inputTypeName]!;
|
|
const typeClass = inputTypes[inputTypeName];
|
|
const typeTarget = typeClass.prototype;
|
|
applyTypeClassEnhanceConfig(
|
|
typeConfig,
|
|
typeClass,
|
|
typeTarget,
|
|
inputsInfo[inputTypeName as keyof typeof inputsInfo],
|
|
);
|
|
}
|
|
}
|
|
|