{"version":3,"file":"db-helpers.mjs","names":[],"sources":["../../../src/plugins/test-utils/db-helpers.ts"],"sourcesContent":["import type { AuthContext } from \"@better-auth/core\";\nimport { generateRandomString } from \"../../crypto\";\nimport type { User } from \"../../types\";\n\nexport function createSaveUser(ctx: AuthContext) {\n\treturn async (user: User): Promise<User> => {\n\t\treturn ctx.internalAdapter.createUser(user);\n\t};\n}\n\nexport function createDeleteUser(ctx: AuthContext) {\n\treturn async (userId: string): Promise<void> => {\n\t\tawait ctx.internalAdapter.deleteUser(userId);\n\t};\n}\n\nexport function createSaveOrganization(ctx: AuthContext) {\n\treturn async (\n\t\torg: Record<string, unknown>,\n\t): Promise<Record<string, unknown>> => {\n\t\tconst result = await ctx.adapter.create({\n\t\t\tmodel: \"organization\",\n\t\t\tdata: org,\n\t\t\tforceAllowId: true,\n\t\t});\n\t\treturn result;\n\t};\n}\n\nexport function createDeleteOrganization(ctx: AuthContext) {\n\treturn async (orgId: string): Promise<void> => {\n\t\t// First delete all members\n\t\tawait ctx.adapter.deleteMany({\n\t\t\tmodel: \"member\",\n\t\t\twhere: [{ field: \"organizationId\", value: orgId }],\n\t\t});\n\n\t\t// Then delete all invitations\n\t\tawait ctx.adapter.deleteMany({\n\t\t\tmodel: \"invitation\",\n\t\t\twhere: [{ field: \"organizationId\", value: orgId }],\n\t\t});\n\n\t\t// Finally delete the organization\n\t\tawait ctx.adapter.delete({\n\t\t\tmodel: \"organization\",\n\t\t\twhere: [{ field: \"id\", value: orgId }],\n\t\t});\n\t};\n}\n\nexport function createAddMember(ctx: AuthContext) {\n\treturn async (opts: {\n\t\tuserId: string;\n\t\torganizationId: string;\n\t\trole?: string;\n\t}): Promise<Record<string, unknown>> => {\n\t\tconst generatedId = ctx.generateId({ model: \"member\" });\n\t\tconst id =\n\t\t\tgeneratedId === false\n\t\t\t\t? generateRandomString(24, \"a-z\", \"A-Z\", \"0-9\")\n\t\t\t\t: generatedId;\n\n\t\tconst result = await ctx.adapter.create({\n\t\t\tmodel: \"member\",\n\t\t\tdata: {\n\t\t\t\tid,\n\t\t\t\tuserId: opts.userId,\n\t\t\t\torganizationId: opts.organizationId,\n\t\t\t\trole: opts.role || \"member\",\n\t\t\t\tcreatedAt: new Date(),\n\t\t\t},\n\t\t\tforceAllowId: true,\n\t\t});\n\t\treturn result;\n\t};\n}\n"],"mappings":";;;;AAIA,SAAgB,eAAe,KAAkB;AAChD,QAAO,OAAO,SAA8B;AAC3C,SAAO,IAAI,gBAAgB,WAAW,KAAK;;;AAI7C,SAAgB,iBAAiB,KAAkB;AAClD,QAAO,OAAO,WAAkC;AAC/C,QAAM,IAAI,gBAAgB,WAAW,OAAO;;;AAI9C,SAAgB,uBAAuB,KAAkB;AACxD,QAAO,OACN,QACsC;AAMtC,SALe,MAAM,IAAI,QAAQ,OAAO;GACvC,OAAO;GACP,MAAM;GACN,cAAc;GACd,CAAC;;;AAKJ,SAAgB,yBAAyB,KAAkB;AAC1D,QAAO,OAAO,UAAiC;AAE9C,QAAM,IAAI,QAAQ,WAAW;GAC5B,OAAO;GACP,OAAO,CAAC;IAAE,OAAO;IAAkB,OAAO;IAAO,CAAC;GAClD,CAAC;AAGF,QAAM,IAAI,QAAQ,WAAW;GAC5B,OAAO;GACP,OAAO,CAAC;IAAE,OAAO;IAAkB,OAAO;IAAO,CAAC;GAClD,CAAC;AAGF,QAAM,IAAI,QAAQ,OAAO;GACxB,OAAO;GACP,OAAO,CAAC;IAAE,OAAO;IAAM,OAAO;IAAO,CAAC;GACtC,CAAC;;;AAIJ,SAAgB,gBAAgB,KAAkB;AACjD,QAAO,OAAO,SAI0B;EACvC,MAAM,cAAc,IAAI,WAAW,EAAE,OAAO,UAAU,CAAC;EACvD,MAAM,KACL,gBAAgB,QACb,qBAAqB,IAAI,OAAO,OAAO,MAAM,GAC7C;AAaJ,SAXe,MAAM,IAAI,QAAQ,OAAO;GACvC,OAAO;GACP,MAAM;IACL;IACA,QAAQ,KAAK;IACb,gBAAgB,KAAK;IACrB,MAAM,KAAK,QAAQ;IACnB,2BAAW,IAAI,MAAM;IACrB;GACD,cAAc;GACd,CAAC"}