From 871206740ff58e8a7c99e2362ac8a898c4e22ee3 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 11 Jul 2018 16:35:20 -0600 Subject: [PATCH] fix: cleanups for asset --- .../server/graph/tenant/loaders/assets.ts | 5 +++-- .../server/graph/tenant/mutators/comment.ts | 2 +- src/core/server/services/assets/index.ts | 21 +++++++++++++++++++ src/core/server/services/comments/index.ts | 14 ++++++------- 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 src/core/server/services/assets/index.ts diff --git a/src/core/server/graph/tenant/loaders/assets.ts b/src/core/server/graph/tenant/loaders/assets.ts index cd7db4b57..b747a1be2 100644 --- a/src/core/server/graph/tenant/loaders/assets.ts +++ b/src/core/server/graph/tenant/loaders/assets.ts @@ -1,15 +1,16 @@ import DataLoader from "dataloader"; + import TenantContext from "talk-server/graph/tenant/context"; import { Asset, - findOrCreateAsset, FindOrCreateAssetInput, retrieveManyAssets, } from "talk-server/models/asset"; +import { findOrCreate } from "talk-server/services/assets"; export default (ctx: TenantContext) => ({ findOrCreate: (input: FindOrCreateAssetInput) => - findOrCreateAsset(ctx.db, ctx.tenant.id, input), + findOrCreate(ctx.db, ctx.tenant, input), asset: new DataLoader(ids => retrieveManyAssets(ctx.db, ctx.tenant.id, ids) ), diff --git a/src/core/server/graph/tenant/mutators/comment.ts b/src/core/server/graph/tenant/mutators/comment.ts index 9025d3cef..1ad380a78 100644 --- a/src/core/server/graph/tenant/mutators/comment.ts +++ b/src/core/server/graph/tenant/mutators/comment.ts @@ -6,7 +6,7 @@ import { create } from "talk-server/services/comments"; export default (ctx: TenantContext) => ({ create: (input: GQLCreateCommentInput): Promise => { // FIXME: remove tenant + user ! - return create(ctx.db, ctx.tenant.id, { + return create(ctx.db, ctx.tenant, { author_id: ctx.user!.id, asset_id: input.assetID, body: input.body, diff --git a/src/core/server/services/assets/index.ts b/src/core/server/services/assets/index.ts new file mode 100644 index 000000000..8c43269d9 --- /dev/null +++ b/src/core/server/services/assets/index.ts @@ -0,0 +1,21 @@ +import { Db } from "mongodb"; + +import { + findOrCreateAsset, + FindOrCreateAssetInput, +} from "talk-server/models/asset"; +import { Tenant } from "talk-server/models/tenant"; + +export type FindOrCreateAsset = FindOrCreateAssetInput; + +export async function findOrCreate( + db: Db, + tenant: Tenant, + input: FindOrCreateAsset +) { + // TODO: check to see if the tenant has enabled lazy asset creation. + + const asset = await findOrCreateAsset(db, tenant.id, input); + + return asset; +} diff --git a/src/core/server/services/comments/index.ts b/src/core/server/services/comments/index.ts index 3d90149b8..dfba035d4 100644 --- a/src/core/server/services/comments/index.ts +++ b/src/core/server/services/comments/index.ts @@ -1,21 +1,19 @@ import { Db } from "mongodb"; import { Omit } from "talk-common/types"; -import { - CommentStatus, - createComment, - CreateCommentInput, -} from "talk-server/models/comment"; +import { GQLCOMMENT_STATUS } from "talk-server/graph/tenant/schema/__generated__/types"; +import { createComment, CreateCommentInput } from "talk-server/models/comment"; +import { Tenant } from "talk-server/models/tenant"; export type CreateComment = Omit< CreateCommentInput, "status" | "action_counts" >; -export async function create(db: Db, tenantID: string, input: CreateComment) { +export async function create(db: Db, tenant: Tenant, input: CreateComment) { // TODO: run the comment through the moderation phases. - const comment = await createComment(db, tenantID, { - status: CommentStatus.ACCEPTED, + const comment = await createComment(db, tenant.id, { + status: GQLCOMMENT_STATUS.ACCEPTED, action_counts: {}, ...input, });