-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: started implementing backend (createAdminRequest mutation)
- Loading branch information
1 parent
f0043d8
commit 850cccd
Showing
23 changed files
with
645 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import { Prisma, AdminRequest } from "@prisma/client"; | ||
import { | ||
LogMetadata, | ||
RepositoryFnDeps | ||
} from "../../../common/repository/types"; | ||
|
||
export type CreateAdminRequestFn = ( | ||
data: Prisma.AdminRequestCreateInput, | ||
logMetadata?: LogMetadata | ||
) => Promise<AdminRequest>; | ||
|
||
export const buildCreateAdminRequest = ( | ||
deps: RepositoryFnDeps | ||
): CreateAdminRequestFn => { | ||
return async (data, logMetadata?) => { | ||
const { prisma, user } = deps; | ||
|
||
const delegation = await prisma.adminRequest.create({ | ||
data | ||
}); | ||
|
||
await prisma.event.create({ | ||
data: { | ||
streamId: delegation.id, | ||
actor: user.id, | ||
type: "AdminRequestCreated", | ||
data: { content: data } as Prisma.InputJsonObject, | ||
metadata: { ...logMetadata, authType: user.auth } | ||
} | ||
}); | ||
|
||
return delegation; | ||
}; | ||
}; |
18 changes: 18 additions & 0 deletions
18
back/src/adminRequest/repository/adminRequest/findFirst.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import { Prisma, AdminRequest } from "@prisma/client"; | ||
import { ReadRepositoryFnDeps } from "../../../common/repository/types"; | ||
|
||
export type FindFirstAdminRequestFn = ( | ||
where: Prisma.AdminRequestWhereInput, | ||
options?: Omit<Prisma.AdminRequestFindFirstArgs, "where"> | ||
) => Promise<AdminRequest | null>; | ||
|
||
const buildFindFirstAdminRequest: ( | ||
deps: ReadRepositoryFnDeps | ||
) => FindFirstAdminRequestFn = | ||
({ prisma }) => | ||
(where, options?) => { | ||
const input = { where, ...options }; | ||
return prisma.adminRequest.findFirst(input); | ||
}; | ||
|
||
export default buildFindFirstAdminRequest; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { Prisma } from "@prisma/client"; | ||
import { ReadRepositoryFnDeps } from "../../../common/repository/types"; | ||
|
||
export type FindManyAdminRequestFn = < | ||
Args extends Omit<Prisma.AdminRequestFindManyArgs, "where"> | ||
>( | ||
where: Prisma.AdminRequestWhereInput, | ||
options?: Args | ||
) => Promise<Array<Prisma.AdminRequestGetPayload<Args>>>; | ||
|
||
export function buildFindManyAdminRequest({ | ||
prisma | ||
}: ReadRepositoryFnDeps): FindManyAdminRequestFn { | ||
return async <Args extends Omit<Prisma.AdminRequestFindManyArgs, "where">>( | ||
where: Prisma.AdminRequestWhereInput, | ||
options?: Args | ||
) => { | ||
const input = { where, ...options }; | ||
const adminRequests = await prisma.adminRequest.findMany(input); | ||
return adminRequests as Array<Prisma.AdminRequestGetPayload<Args>>; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
import { Prisma, AdminRequest } from "@prisma/client"; | ||
import { | ||
LogMetadata, | ||
RepositoryFnDeps | ||
} from "../../../common/repository/types"; | ||
|
||
export type UpdateAdminRequestFn = ( | ||
where: Prisma.AdminRequestWhereUniqueInput, | ||
data: Prisma.AdminRequestUpdateInput, | ||
logMetadata?: LogMetadata | ||
) => Promise<AdminRequest>; | ||
|
||
export const buildUpdateAdminRequest = ( | ||
deps: RepositoryFnDeps | ||
): UpdateAdminRequestFn => { | ||
return async (where, data, logMetadata) => { | ||
const { prisma, user } = deps; | ||
|
||
const delegation = await prisma.adminRequest.update({ | ||
where, | ||
data | ||
}); | ||
|
||
await prisma.event.create({ | ||
data: { | ||
streamId: delegation.id, | ||
actor: user.id, | ||
type: "AdminRequestUpdated", | ||
data: { content: data } as Prisma.InputJsonObject, | ||
metadata: { ...logMetadata, authType: user.auth } | ||
} | ||
}); | ||
|
||
return delegation; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import { prisma } from "@td/prisma"; | ||
import { buildCreateAdminRequest } from "./adminRequest/create"; | ||
import { transactionWrapper } from "../../common/repository/helper"; | ||
import { | ||
RepositoryFnBuilder, | ||
RepositoryTransaction | ||
} from "../../common/repository/types"; | ||
import { AdminRequestActions } from "./types"; | ||
import buildFindFirstAdminRequest from "./adminRequest/findFirst"; | ||
import { buildUpdateAdminRequest } from "./adminRequest/update"; | ||
import { buildFindManyAdminRequest } from "./adminRequest/findMany"; | ||
|
||
export type AdminRequestRepository = AdminRequestActions; | ||
|
||
export function getReadonlyAdminRequestRepository() { | ||
return { | ||
findFirst: buildFindFirstAdminRequest({ prisma }), | ||
findMany: buildFindManyAdminRequest({ prisma }) | ||
}; | ||
} | ||
|
||
export function getAdminRequestRepository( | ||
user: Express.User, | ||
transaction?: RepositoryTransaction | ||
): AdminRequestRepository { | ||
function useTransaction<FnResult>(builder: RepositoryFnBuilder<FnResult>) { | ||
return transactionWrapper(builder, { user, transaction }); | ||
} | ||
|
||
return { | ||
...getReadonlyAdminRequestRepository(), | ||
create: useTransaction(buildCreateAdminRequest), | ||
update: useTransaction(buildUpdateAdminRequest) | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import { CreateAdminRequestFn } from "./adminRequest/create"; | ||
import { FindFirstAdminRequestFn } from "./adminRequest/findFirst"; | ||
import { FindManyAdminRequestFn } from "./adminRequest/findMany"; | ||
import { UpdateAdminRequestFn } from "./adminRequest/update"; | ||
|
||
export type AdminRequestActions = { | ||
// Read | ||
findFirst: FindFirstAdminRequestFn; | ||
findMany: FindManyAdminRequestFn; | ||
|
||
// Write | ||
create: CreateAdminRequestFn; | ||
update: UpdateAdminRequestFn; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import type { MutationResolvers } from "@td/codegen-back"; | ||
import createAdminRequest from "./mutations/createAdminRequest"; | ||
|
||
export type AdminRequestMutationResolvers = Pick< | ||
MutationResolvers, | ||
"createAdminRequest" | ||
>; | ||
|
||
const Mutation: AdminRequestMutationResolvers = { | ||
createAdminRequest | ||
}; | ||
|
||
export default Mutation; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import type { QueryResolvers } from "@td/codegen-back"; | ||
// import AdminRequest from "./queries/AdminRequest"; | ||
// import AdminRequests from "./queries/AdminRequests"; | ||
|
||
export type AdminRequestQueryResolvers = QueryResolvers; | ||
// Pick< | ||
// QueryResolvers, | ||
// "AdminRequest" | "AdminRequests" | ||
// >; | ||
|
||
const Query: AdminRequestQueryResolvers = { | ||
// AdminRequest, | ||
// AdminRequests | ||
}; | ||
|
||
export default Query; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import Mutation from "./Mutation"; | ||
import Query from "./Query"; | ||
|
||
export default { | ||
Mutation, | ||
Query | ||
}; |
Oops, something went wrong.