From ed998598dfe63007b736076b5fc793ee19ca44d4 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 17 Jan 2023 10:22:17 -0500 Subject: [PATCH] chore: implements new typing into create and find operations --- src/collections/operations/create.ts | 12 +++++++----- src/collections/operations/find.ts | 6 ++++-- src/collections/operations/findByID.ts | 4 +++- src/collections/operations/local/create.ts | 14 +++++++++----- src/collections/operations/local/find.ts | 13 ++++++++----- src/payload.ts | 8 ++++---- src/versions/drafts/mergeDrafts.ts | 12 ++---------- 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/collections/operations/create.ts b/src/collections/operations/create.ts index d51509823c..49bad88019 100644 --- a/src/collections/operations/create.ts +++ b/src/collections/operations/create.ts @@ -1,5 +1,5 @@ import crypto from 'crypto'; - +import { Config as GeneratedTypes } from 'payload/generated-types'; import executeAccess from '../../auth/executeAccess'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; @@ -17,19 +17,21 @@ import { afterChange } from '../../fields/hooks/afterChange'; import { afterRead } from '../../fields/hooks/afterRead'; import { generateFileData } from '../../uploads/generateFileData'; -export type Arguments = { +export type Arguments = { collection: Collection req: PayloadRequest depth?: number disableVerificationEmail?: boolean overrideAccess?: boolean showHiddenFields?: boolean - data: Record + data: T overwriteExistingFiles?: boolean draft?: boolean } -async function create(incomingArgs: Arguments): Promise { +async function create( + incomingArgs: Arguments, +): Promise { let args = incomingArgs; // ///////////////////////////////////// @@ -159,7 +161,7 @@ async function create(incomingArgs: Arguments): Promise { // beforeChange - Fields // ///////////////////////////////////// - const resultWithLocales = await beforeChange({ + const resultWithLocales = await beforeChange>({ data, doc: {}, docWithLocales: {}, diff --git a/src/collections/operations/find.ts b/src/collections/operations/find.ts index 46e5677bff..10195753b5 100644 --- a/src/collections/operations/find.ts +++ b/src/collections/operations/find.ts @@ -2,7 +2,7 @@ import { Where } from '../../types'; import { PayloadRequest } from '../../express/types'; import executeAccess from '../../auth/executeAccess'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; -import { Collection, TypeWithID } from '../config/types'; +import { Collection } from '../config/types'; import { PaginatedDocs } from '../../mongoose/types'; import { hasWhereAccessResult } from '../../auth/types'; import flattenWhereConstraints from '../../utilities/flattenWhereConstraints'; @@ -28,7 +28,9 @@ export type Arguments = { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -async function find(incomingArgs: Arguments): Promise> { +async function find>( + incomingArgs: Arguments, +): Promise> { let args = incomingArgs; // ///////////////////////////////////// diff --git a/src/collections/operations/findByID.ts b/src/collections/operations/findByID.ts index c88dea47c7..e01a8e940b 100644 --- a/src/collections/operations/findByID.ts +++ b/src/collections/operations/findByID.ts @@ -23,7 +23,9 @@ export type Arguments = { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -async function findByID>(incomingArgs: Arguments): Promise { +async function findByID>( + incomingArgs: Arguments, +): Promise { let args = incomingArgs; // ///////////////////////////////////// diff --git a/src/collections/operations/local/create.ts b/src/collections/operations/local/create.ts index 366fc9ca0a..c91a968bf6 100644 --- a/src/collections/operations/local/create.ts +++ b/src/collections/operations/local/create.ts @@ -1,3 +1,4 @@ +import { Config as GeneratedTypes } from 'payload/generated-types'; import { UploadedFile } from 'express-fileupload'; import { Payload } from '../../../payload'; import { PayloadRequest } from '../../../express/types'; @@ -8,9 +9,9 @@ import { getDataLoader } from '../../dataloader'; import { File } from '../../../uploads/types'; import i18n from '../../../translations/init'; -export type Options = { - collection: string - data: Record +export type Options = { + collection: TSlug + data: GeneratedTypes['collections'][TSlug] depth?: number locale?: string fallbackLocale?: string @@ -25,7 +26,10 @@ export type Options = { draft?: boolean } -export default async function createLocal(payload: Payload, options: Options): Promise { +export default async function createLocal( + payload: Payload, + options: Options, +): Promise { const { collection: collectionSlug, depth, @@ -60,7 +64,7 @@ export default async function createLocal(payload: Payload, options: Op if (!req.t) req.t = req.i18n.t; if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req); - return create({ + return create({ depth, data, collection, diff --git a/src/collections/operations/local/find.ts b/src/collections/operations/local/find.ts index 9bf82337f1..2ced770742 100644 --- a/src/collections/operations/local/find.ts +++ b/src/collections/operations/local/find.ts @@ -1,4 +1,4 @@ -import { TypeWithID } from '../../config/types'; +import { Config as GeneratedTypes } from 'payload/generated-types'; import { PaginatedDocs } from '../../../mongoose/types'; import { Document, Where } from '../../../types'; import { Payload } from '../../../payload'; @@ -7,8 +7,8 @@ import find from '../find'; import { getDataLoader } from '../../dataloader'; import i18n from '../../../translations/init'; -export type Options = { - collection: string +export type Options = { + collection: T depth?: number currentDepth?: number page?: number @@ -27,7 +27,10 @@ export type Options = { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -export default async function findLocal(payload: Payload, options: Options): Promise> { +export default async function findLocal( + payload: Payload, + options: Options, +): Promise> { const { collection: collectionSlug, depth, @@ -61,7 +64,7 @@ export default async function findLocal(payload: Pay if (typeof user !== 'undefined') req.user = user; - return find({ + return find({ depth, currentDepth, sort, diff --git a/src/payload.ts b/src/payload.ts index f22d4d6937..0d4b97946f 100644 --- a/src/payload.ts +++ b/src/payload.ts @@ -211,9 +211,9 @@ export class BasePayload { * @param options * @returns created document */ - create = async (options: CreateOptions): Promise => { + create = async (options: CreateOptions): Promise => { const { create } = localOperations; - return create(this, options); + return create(this, options); } /** @@ -221,9 +221,9 @@ export class BasePayload { * @param options * @returns documents satisfying query */ - find = async (options: FindOptions): Promise> => { + find = async (options: FindOptions): Promise> => { const { find } = localOperations; - return find(this, options); + return find(this, options); } findGlobal = async (options: FindGlobalOptions): Promise => { diff --git a/src/versions/drafts/mergeDrafts.ts b/src/versions/drafts/mergeDrafts.ts index 846e89dd70..1951514105 100644 --- a/src/versions/drafts/mergeDrafts.ts +++ b/src/versions/drafts/mergeDrafts.ts @@ -2,10 +2,9 @@ import { AccessResult } from '../../config/types'; import { Where } from '../../types'; import { Payload } from '../../payload'; import { PaginatedDocs } from '../../mongoose/types'; -import { Collection, CollectionModel, TypeWithID } from '../../collections/config/types'; +import { Collection, CollectionModel } from '../../collections/config/types'; import { hasWhereAccessResult } from '../../auth'; import { appendVersionToQueryKey } from './appendVersionToQueryKey'; -import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; import replaceWithDraftIfAvailable from './replaceWithDraftIfAvailable'; type AggregateVersion = { @@ -33,7 +32,7 @@ type Args = { where: Where } -export const mergeDrafts = async ({ +export const mergeDrafts = async >({ accessResult, collection, locale, @@ -51,8 +50,6 @@ export const mergeDrafts = async ({ return newMap; }, {})); - console.log({ mainCollectionMatchMap }); - // Query the versions collection with a version-specific query const VersionModel = payload.versions[collection.config.slug] as CollectionModel; @@ -135,9 +132,6 @@ export const mergeDrafts = async ({ return newMap; }, {})); - console.log({ versionCollectionMatchMap }); - console.log({ includedParentIDs }); - // Now we need to explicitly exclude any parent matches that have newer versions // which did NOT appear in the versions query const excludedParentIDs = await Promise.all(Object.entries(mainCollectionMatchMap).map(async ([parentDocID, parentDocUpdatedAt]) => { @@ -202,8 +196,6 @@ export const mergeDrafts = async ({ }); } - console.log({ finalQueryToBuild: JSON.stringify(finalQueryToBuild) }); - const finalQuery = await collection.Model.buildQuery(finalQueryToBuild, locale); let result = await collection.Model.paginate(finalQuery, paginationOptions);