feat: work on database adapter (#3000)
This commit is contained in:
@@ -6,7 +6,7 @@ import optionsReducer from './optionsReducer';
|
||||
import useDebounce from '../../../../../hooks/useDebounce';
|
||||
import ReactSelect from '../../../ReactSelect';
|
||||
import { Option } from '../../../ReactSelect/types';
|
||||
import { PaginatedDocs } from '../../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../../database/types';
|
||||
|
||||
import './index.scss';
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import i18n from 'i18next';
|
||||
import { RelationshipField } from '../../../../../../fields/config/types';
|
||||
import { SanitizedCollectionConfig } from '../../../../../../collections/config/types';
|
||||
import { PaginatedDocs } from '../../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../../database/types';
|
||||
|
||||
export type Props = {
|
||||
onChange: (val: unknown) => void,
|
||||
|
||||
@@ -11,7 +11,7 @@ import Error from '../../Error';
|
||||
import FieldDescription from '../../FieldDescription';
|
||||
import { relationship } from '../../../../../fields/validations';
|
||||
import { Where } from '../../../../../types';
|
||||
import { PaginatedDocs } from '../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../database/types';
|
||||
import { useFormProcessing } from '../../Form/context';
|
||||
import optionsReducer from './optionsReducer';
|
||||
import { FilterOptionsResult, GetResults, Props, Value } from './types';
|
||||
|
||||
@@ -5,7 +5,7 @@ import qs from 'qs';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { useConfig } from '../Config';
|
||||
import { PaginatedDocs } from '../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../database/types';
|
||||
import { ContextType, DocumentPermissions, Props, Version } from './types';
|
||||
import { TypeWithID } from '../../../../globals/config/types';
|
||||
import { TypeWithTimestamps } from '../../../../collections/config/types';
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import { CollectionPermission, GlobalPermission } from '../../../../auth';
|
||||
import { SanitizedCollectionConfig, TypeWithID, TypeWithTimestamps } from '../../../../collections/config/types';
|
||||
import { SanitizedGlobalConfig } from '../../../../globals/config/types';
|
||||
import { PaginatedDocs } from '../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../database/types';
|
||||
import { TypeWithVersion } from '../../../../versions/types';
|
||||
|
||||
export type Version = TypeWithVersion<any>
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next';
|
||||
import { useConfig } from '../../../utilities/Config';
|
||||
import { Props } from './types';
|
||||
import ReactSelect from '../../../elements/ReactSelect';
|
||||
import { PaginatedDocs } from '../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../database/types';
|
||||
import { Where } from '../../../../../types';
|
||||
import { mostRecentVersionOption, publishedVersionOption } from '../shared';
|
||||
import { formatDate } from '../../../../utilities/formatDate';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SanitizedCollectionConfig } from '../../../../../collections/config/types';
|
||||
import { PaginatedDocs } from '../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../database/types';
|
||||
import { CompareOption } from '../types';
|
||||
|
||||
export type Props = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Where } from '../../../../../types';
|
||||
import { SanitizedCollectionConfig } from '../../../../../collections/config/types';
|
||||
import { PaginatedDocs } from '../../../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../../../database/types';
|
||||
import { Props as ListControlsProps } from '../../../elements/ListControls/types';
|
||||
import { Props as PerPageProps } from '../../../elements/PerPage';
|
||||
import { Props as PaginatorProps } from '../../../elements/Paginator/types';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { PayloadRequest } from '../../../express/types';
|
||||
import forgotPassword, { Result } from '../forgotPassword';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -36,7 +36,7 @@ async function localForgotPassword<T extends keyof GeneratedTypes['collections']
|
||||
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.payload = payload;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
||||
|
||||
@@ -4,7 +4,7 @@ import login, { Result } from '../login';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<TSlug extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -46,7 +46,7 @@ async function localLogin<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.payload = payload;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
req.locale = undefined;
|
||||
req.fallbackLocale = undefined;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Payload } from '../../../payload';
|
||||
import resetPassword, { Result } from '../resetPassword';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -35,7 +35,7 @@ async function localResetPassword<T extends keyof GeneratedTypes['collections']>
|
||||
|
||||
req.payload = payload;
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
||||
|
||||
@@ -3,7 +3,7 @@ import { PayloadRequest } from '../../../express/types';
|
||||
import { Payload } from '../../../payload';
|
||||
import unlock from '../unlock';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -34,7 +34,7 @@ async function localUnlock<T extends keyof GeneratedTypes['collections']>(
|
||||
|
||||
req.payload = payload;
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
||||
|
||||
@@ -77,6 +77,7 @@ async function resetPassword(args: Arguments): Promise<Result> {
|
||||
collection: collectionConfig.slug,
|
||||
where: { id: { equals: user.id } },
|
||||
data: user,
|
||||
req: args.req,
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ async function verifyEmail(args: Args): Promise<boolean> {
|
||||
_verified: true,
|
||||
_verificationToken: undefined,
|
||||
},
|
||||
req,
|
||||
});
|
||||
|
||||
return true;
|
||||
|
||||
@@ -2,12 +2,14 @@ import { ValidationError } from '../../../errors';
|
||||
import { Payload } from '../../..';
|
||||
import { SanitizedCollectionConfig } from '../../../collections/config/types';
|
||||
import { generatePasswordSaltHash } from './generatePasswordSaltHash';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
|
||||
type Args = {
|
||||
collection: SanitizedCollectionConfig
|
||||
doc: Record<string, unknown>
|
||||
password: string
|
||||
payload: Payload
|
||||
req: PayloadRequest
|
||||
}
|
||||
|
||||
export const registerLocalStrategy = async ({
|
||||
@@ -15,6 +17,7 @@ export const registerLocalStrategy = async ({
|
||||
doc,
|
||||
password,
|
||||
payload,
|
||||
req,
|
||||
}: Args): Promise<Record<string, unknown>> => {
|
||||
const existingUser = await payload.find({
|
||||
collection: collection.slug,
|
||||
@@ -39,5 +42,6 @@ export const registerLocalStrategy = async ({
|
||||
salt,
|
||||
hash,
|
||||
},
|
||||
req,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { DeepRequired } from 'ts-essentials';
|
||||
import { AggregatePaginateModel, IndexDefinition, IndexOptions, Model, PaginateModel } from 'mongoose';
|
||||
import { GraphQLInputObjectType, GraphQLNonNull, GraphQLObjectType } from 'graphql';
|
||||
import { Response } from 'express';
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import type { IndexDefinition, IndexOptions } from 'mongoose';
|
||||
import type { Where } from '../../types';
|
||||
import { Access, Endpoint, EntityDescription, GeneratePreviewURL } from '../../config/types';
|
||||
import { Field } from '../../fields/config/types';
|
||||
@@ -11,7 +11,6 @@ import { PayloadRequest } from '../../express/types';
|
||||
import { Auth, IncomingAuthType, User } from '../../auth/types';
|
||||
import { IncomingUploadType, Upload } from '../../uploads/types';
|
||||
import { IncomingCollectionVersions, SanitizedCollectionVersions } from '../../versions/types';
|
||||
import { BuildQueryArgs } from '../../mongoose/queries/buildQuery';
|
||||
import {
|
||||
CustomPreviewButtonProps,
|
||||
CustomPublishButtonProps,
|
||||
@@ -21,23 +20,6 @@ import {
|
||||
import type { Props as ListProps } from '../../admin/components/views/collections/List/types';
|
||||
import type { Props as EditProps } from '../../admin/components/views/collections/Edit/types';
|
||||
|
||||
type Register<T = any> = (doc: T, password: string) => T;
|
||||
|
||||
interface PassportLocalModel {
|
||||
register: Register
|
||||
authenticate: any
|
||||
}
|
||||
|
||||
export interface CollectionModel extends Model<any>, PaginateModel<any>, AggregatePaginateModel<any>, PassportLocalModel {
|
||||
/** buildQuery is used to transform payload's where operator into what can be used by mongoose (e.g. id => _id) */
|
||||
buildQuery: (args: BuildQueryArgs) => Promise<Record<string, unknown>> // TODO: Delete this
|
||||
}
|
||||
|
||||
export interface AuthCollectionModel extends CollectionModel {
|
||||
resetPasswordToken: string;
|
||||
resetPasswordExpiration: Date;
|
||||
}
|
||||
|
||||
export type HookOperationType =
|
||||
| 'create'
|
||||
| 'autosave'
|
||||
@@ -361,7 +343,6 @@ export interface SanitizedCollectionConfig extends Omit<DeepRequired<CollectionC
|
||||
}
|
||||
|
||||
export type Collection = {
|
||||
Model?: CollectionModel;
|
||||
config: SanitizedCollectionConfig;
|
||||
graphQL?: {
|
||||
type: GraphQLObjectType
|
||||
@@ -383,7 +364,6 @@ export type BulkOperationResult<TSlug extends keyof GeneratedTypes['collections'
|
||||
}
|
||||
|
||||
export type AuthCollection = {
|
||||
Model: AuthCollectionModel;
|
||||
config: SanitizedCollectionConfig;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* eslint-disable no-param-reassign */
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import type { PaginatedDocs } from '../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../database/types';
|
||||
import { Where } from '../../../types';
|
||||
import { Collection } from '../../config/types';
|
||||
import find from '../../operations/find';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { Response } from 'express';
|
||||
import { Where } from '../../../types';
|
||||
import type { PaginatedDocs } from '../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../database/types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Collection } from '../../config/types';
|
||||
import findVersions from '../../operations/findVersions';
|
||||
|
||||
@@ -202,12 +202,14 @@ async function create<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
doc: resultWithLocales,
|
||||
payload: req.payload,
|
||||
password: data.password as string,
|
||||
req,
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
doc = await payload.db.create({
|
||||
collection: collectionConfig.slug,
|
||||
data: resultWithLocales,
|
||||
req,
|
||||
});
|
||||
} catch (error) {
|
||||
// Handle uniqueness error from MongoDB
|
||||
|
||||
@@ -139,6 +139,7 @@ async function deleteOperation<TSlug extends keyof GeneratedTypes['collections']
|
||||
equals: id,
|
||||
},
|
||||
},
|
||||
req,
|
||||
});
|
||||
|
||||
// /////////////////////////////////////
|
||||
@@ -217,6 +218,7 @@ async function deleteOperation<TSlug extends keyof GeneratedTypes['collections']
|
||||
payload,
|
||||
collectionConfig,
|
||||
ids: docs.map(({ id }) => id),
|
||||
req,
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
@@ -99,6 +99,7 @@ async function deleteByID<TSlug extends keyof GeneratedTypes['collections']>(inc
|
||||
let result = await req.payload.db.deleteOne({
|
||||
collection: collectionConfig.slug,
|
||||
where: { id: { equals: id } },
|
||||
req,
|
||||
});
|
||||
|
||||
|
||||
@@ -110,6 +111,7 @@ async function deleteByID<TSlug extends keyof GeneratedTypes['collections']>(inc
|
||||
payload,
|
||||
collectionConfig,
|
||||
ids: [id],
|
||||
req,
|
||||
});
|
||||
|
||||
// /////////////////////////////////////
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Where } from '../../types';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import executeAccess from '../../auth/executeAccess';
|
||||
import { Collection, TypeWithID } from '../config/types';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import { AccessResult } from '../../config/types';
|
||||
import { afterRead } from '../../fields/hooks/afterRead';
|
||||
import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { PayloadRequest } from '../../express/types';
|
||||
import executeAccess from '../../auth/executeAccess';
|
||||
import sanitizeInternalFields from '../../utilities/sanitizeInternalFields';
|
||||
import { Collection } from '../config/types';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import { TypeWithVersion } from '../../versions/types';
|
||||
import { afterRead } from '../../fields/hooks/afterRead';
|
||||
import { buildVersionCollectionFields } from '../../versions/buildCollectionFields';
|
||||
|
||||
@@ -8,7 +8,7 @@ import getFileByPath from '../../../uploads/getFileByPath';
|
||||
import create from '../create';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import { File } from '../../../uploads/types';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<TSlug extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -60,7 +60,7 @@ export default async function createLocal<TSlug extends keyof GeneratedTypes['co
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.payload = payload;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
req.files = {
|
||||
file: (file ?? (await getFileByPath(filePath))) as UploadedFile,
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Payload } from '../../../payload';
|
||||
import deleteOperation from '../delete';
|
||||
import deleteByID from '../deleteByID';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
import { BulkOperationResult } from '../../config/types';
|
||||
|
||||
@@ -61,7 +61,7 @@ async function deleteLocal<TSlug extends keyof GeneratedTypes['collections']>(pa
|
||||
locale: locale ?? defaultLocale,
|
||||
fallbackLocale: fallbackLocale ?? defaultLocale,
|
||||
payload,
|
||||
i18n: i18n(payload.config.i18n),
|
||||
i18n: i18nInit(payload.config.i18n),
|
||||
} as PayloadRequest;
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../database/types';
|
||||
import { Document, Where } from '../../../types';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import find from '../find';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -60,7 +60,7 @@ export default async function findLocal<T extends keyof GeneratedTypes['collecti
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Document } from '../../../types';
|
||||
import findByID from '../findByID';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -51,7 +51,7 @@ export default async function findByIDLocal<T extends keyof GeneratedTypes['coll
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
if (typeof user !== 'undefined') req.user = user;
|
||||
|
||||
@@ -5,7 +5,7 @@ import { PayloadRequest } from '../../../express/types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
import findVersionByID from '../findVersionByID';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
@@ -47,7 +47,7 @@ export default async function findVersionByIDLocal<T extends keyof GeneratedType
|
||||
req.payloadAPI = req.payloadAPI || 'local';
|
||||
req.locale = locale ?? req?.locale ?? defaultLocale;
|
||||
req.fallbackLocale = fallbackLocale ?? req?.fallbackLocale ?? defaultLocale;
|
||||
req.i18n = i18n(payload.config.i18n);
|
||||
req.i18n = i18nInit(payload.config.i18n);
|
||||
req.payload = payload;
|
||||
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { Payload } from '../../../payload';
|
||||
import { Document, Where } from '../../../types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../database/types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import findVersions from '../findVersions';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import restoreVersion from '../restoreVersion';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
|
||||
@@ -7,7 +7,7 @@ import update from '../update';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import { File } from '../../../uploads/types';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
import updateByID from '../updateByID';
|
||||
import { BulkOperationResult } from '../../config/types';
|
||||
|
||||
@@ -104,7 +104,7 @@ async function restoreVersion<T extends TypeWithID = any>(args: Arguments): Prom
|
||||
collection: collectionConfig.slug,
|
||||
where: { id: { equals: parentDocID } },
|
||||
data: rawVersion.version,
|
||||
|
||||
req,
|
||||
});
|
||||
|
||||
// /////////////////////////////////////
|
||||
|
||||
@@ -248,6 +248,7 @@ async function update<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
locale,
|
||||
where: { id: { equals: id } },
|
||||
data: result,
|
||||
req,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -234,6 +234,7 @@ async function updateByID<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
locale,
|
||||
where: { id: { equals: id } },
|
||||
data: dataToUpdate,
|
||||
req,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Response, NextFunction } from 'express';
|
||||
import httpStatus from 'http-status';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import { TypeWithID } from '../config/types';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import find from '../operations/find';
|
||||
import { Where } from '../../types';
|
||||
import { isNumber } from '../../utilities/isNumber';
|
||||
|
||||
@@ -3,7 +3,7 @@ import httpStatus from 'http-status';
|
||||
import { Where } from '../../types';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import { TypeWithID } from '../config/types';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import { isNumber } from '../../utilities/isNumber';
|
||||
import findVersions from '../operations/findVersions';
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import type {
|
||||
import type { TypeWithID } from '../collections/config/types';
|
||||
import type { TypeWithID as GlobalsTypeWithID } from '../globals/config/types';
|
||||
import type { Payload } from '../payload';
|
||||
import type { Document, Where } from '../types';
|
||||
import type { Document, PayloadRequest, Where } from '../types';
|
||||
import type { TypeWithVersion } from '../versions/types';
|
||||
|
||||
export interface DatabaseAdapter {
|
||||
@@ -126,6 +126,7 @@ export interface DatabaseAdapter {
|
||||
create: Create;
|
||||
updateOne: UpdateOne;
|
||||
deleteOne: DeleteOne;
|
||||
deleteMany: DeleteMany;
|
||||
|
||||
// operations - globals
|
||||
findGlobal: FindGlobal;
|
||||
@@ -274,6 +275,7 @@ export type CreateArgs = {
|
||||
data: Record<string, unknown>
|
||||
draft?: boolean
|
||||
locale?: string
|
||||
req: PayloadRequest
|
||||
}
|
||||
|
||||
export type Create = (args: CreateArgs) => Promise<Document>
|
||||
@@ -284,6 +286,7 @@ export type UpdateArgs = {
|
||||
where: Where
|
||||
draft?: boolean
|
||||
locale?: string
|
||||
req: PayloadRequest
|
||||
}
|
||||
|
||||
export type Update = (args: UpdateArgs) => Promise<Document>
|
||||
@@ -294,6 +297,7 @@ export type UpdateOneArgs = {
|
||||
where: Where
|
||||
draft?: boolean
|
||||
locale?: string
|
||||
req: PayloadRequest
|
||||
}
|
||||
|
||||
export type UpdateOne = (args: UpdateOneArgs) => Promise<Document>
|
||||
@@ -301,6 +305,7 @@ export type UpdateOne = (args: UpdateOneArgs) => Promise<Document>
|
||||
export type DeleteOneArgs = {
|
||||
collection: string
|
||||
where: Where
|
||||
req: PayloadRequest
|
||||
}
|
||||
|
||||
export type DeleteOne = (args: DeleteOneArgs) => Promise<Document>
|
||||
@@ -308,8 +313,12 @@ export type DeleteOne = (args: DeleteOneArgs) => Promise<Document>
|
||||
export type DeleteManyArgs = {
|
||||
collection: string
|
||||
where: Where
|
||||
req: PayloadRequest | null
|
||||
}
|
||||
|
||||
export type DeleteMany = (args: DeleteManyArgs) => Promise<void>
|
||||
|
||||
|
||||
export type Migration = MigrationData & {
|
||||
up: ({ payload }: { payload }) => Promise<boolean>
|
||||
down: ({ payload }: { payload }) => Promise<boolean>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import React from 'react';
|
||||
import { Document, Model } from 'mongoose';
|
||||
import { DeepRequired } from 'ts-essentials';
|
||||
import { GraphQLNonNull, GraphQLObjectType } from 'graphql';
|
||||
import type { Where } from '../../types';
|
||||
@@ -49,10 +48,6 @@ export type AfterReadHook = (args: {
|
||||
findMany?: boolean
|
||||
}) => any;
|
||||
|
||||
export interface GlobalModel extends Model<Document> {
|
||||
buildQuery: (query: unknown, locale?: string) => Promise<Record<string, unknown>>
|
||||
}
|
||||
|
||||
export type GlobalAdminOptions = {
|
||||
/**
|
||||
* Exclude the global from the admin nav and routes
|
||||
@@ -149,7 +144,6 @@ export interface SanitizedGlobalConfig extends Omit<DeepRequired<GlobalConfig>,
|
||||
}
|
||||
|
||||
export type Globals = {
|
||||
Model?: GlobalModel
|
||||
config: SanitizedGlobalConfig[]
|
||||
graphQL?: {
|
||||
[slug: string]: {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Where } from '../../types';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import executeAccess from '../../auth/executeAccess';
|
||||
import sanitizeInternalFields from '../../utilities/sanitizeInternalFields';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import { SanitizedGlobalConfig } from '../config/types';
|
||||
import { afterRead } from '../../fields/hooks/afterRead';
|
||||
import { buildVersionGlobalFields } from '../../versions/buildGlobalFields';
|
||||
|
||||
@@ -4,7 +4,7 @@ import { getDataLoader } from '../../../collections/dataloader';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import findOne from '../findOne';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['globals']> = {
|
||||
|
||||
@@ -5,7 +5,7 @@ import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
import findVersionByID from '../findVersionByID';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['globals']> = {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { Document, Where } from '../../../types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../../database/types';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import findVersions from '../findVersions';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { getDataLoader } from '../../../collections/dataloader';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import restoreVersion from '../restoreVersion';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<T extends keyof GeneratedTypes['globals']> = {
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Document } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import update from '../update';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18nInit from '../../../translations/init';
|
||||
import { i18nInit } from '../../../translations/init';
|
||||
import { APIError } from '../../../errors';
|
||||
|
||||
export type Options<TSlug extends keyof GeneratedTypes['globals']> = {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Response, NextFunction } from 'express';
|
||||
import httpStatus from 'http-status';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import { TypeWithID } from '../../collections/config/types';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import type { PaginatedDocs } from '../../database/types';
|
||||
import { SanitizedGlobalConfig } from '../config/types';
|
||||
import findVersions from '../operations/findVersions';
|
||||
import { Where } from '../../types';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { MongooseAdapter } from '.';
|
||||
import type { Create } from '../database/types';
|
||||
import { Document } from '../types';
|
||||
import type { Document } from '../types';
|
||||
|
||||
export const create: Create = async function create(this: MongooseAdapter,
|
||||
{ collection, data }) {
|
||||
|
||||
14
src/mongoose/deleteMany.ts
Normal file
14
src/mongoose/deleteMany.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import type { MongooseAdapter } from '.';
|
||||
import type { DeleteMany } from '../database/types';
|
||||
|
||||
export const deleteMany: DeleteMany = async function deleteMany(this: MongooseAdapter,
|
||||
{ collection, where }) {
|
||||
const Model = this.collections[collection];
|
||||
|
||||
const query = await Model.buildQuery({
|
||||
payload: this.payload,
|
||||
where,
|
||||
});
|
||||
|
||||
await Model.deleteMany(query).lean();
|
||||
};
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { ConnectOptions } from 'mongoose';
|
||||
import { CollectionModel } from '../collections/config/types';
|
||||
import { createMigration } from '../database/migrations/createMigration';
|
||||
import { migrate } from '../database/migrations/migrate';
|
||||
import { migrateDown } from '../database/migrations/migrateDown';
|
||||
@@ -7,8 +6,8 @@ import { migrateRefresh } from '../database/migrations/migrateRefresh';
|
||||
import { migrateReset } from '../database/migrations/migrateReset';
|
||||
import { migrateStatus } from '../database/migrations/migrateStatus';
|
||||
import type { DatabaseAdapter } from '../database/types';
|
||||
import { GlobalModel } from '../globals/config/types';
|
||||
import type { Payload } from '../index';
|
||||
import { Payload } from '../index';
|
||||
import type { SanitizedConfig } from '../config/types';
|
||||
import { connect } from './connect';
|
||||
import { create } from './create';
|
||||
import { find } from './find';
|
||||
@@ -27,6 +26,8 @@ import { findOne } from './findOne';
|
||||
import { updateGlobal } from './updateGlobal';
|
||||
import { updateOne } from './updateOne';
|
||||
import { updateVersion } from './updateVersion';
|
||||
import type { CollectionModel, GlobalModel } from './types';
|
||||
import { deleteMany } from './deleteMany';
|
||||
|
||||
export interface Args {
|
||||
payload: Payload;
|
||||
@@ -57,14 +58,14 @@ export function mongooseAdapter({
|
||||
connectOptions,
|
||||
migrationDir = '.migrations',
|
||||
}: Args): MongooseAdapter {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
return {
|
||||
payload,
|
||||
url,
|
||||
connectOptions: connectOptions || {},
|
||||
collections: {},
|
||||
versions: {},
|
||||
globals: undefined,
|
||||
mongoMemoryServer: undefined,
|
||||
connect,
|
||||
init,
|
||||
webpack,
|
||||
@@ -86,6 +87,7 @@ export function mongooseAdapter({
|
||||
create,
|
||||
updateOne,
|
||||
deleteOne,
|
||||
deleteMany,
|
||||
findGlobal,
|
||||
createGlobal,
|
||||
updateGlobal,
|
||||
|
||||
@@ -6,12 +6,13 @@ import { buildVersionCollectionFields } from '../versions/buildCollectionFields'
|
||||
import getBuildQueryPlugin from './queries/buildQuery';
|
||||
import buildCollectionSchema from './models/buildCollectionSchema';
|
||||
import buildSchema from './models/buildSchema';
|
||||
import { CollectionModel, SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { getVersionsModelName } from '../versions/getVersionsModelName';
|
||||
import type { MongooseAdapter } from '.';
|
||||
import { buildGlobalModel } from './models/buildGlobalModel';
|
||||
import { buildVersionGlobalFields } from '../versions/buildGlobalFields';
|
||||
import type { Init } from '../database/types';
|
||||
import { CollectionModel } from './types';
|
||||
|
||||
export const init: Init = async function init(this: MongooseAdapter,
|
||||
{ config }) {
|
||||
@@ -70,7 +71,6 @@ export const init: Init = async function init(this: MongooseAdapter,
|
||||
this.collections[collection.slug] = model;
|
||||
|
||||
this.payload.collections[collection.slug] = {
|
||||
Model: model,
|
||||
config: collection,
|
||||
};
|
||||
});
|
||||
@@ -78,8 +78,6 @@ export const init: Init = async function init(this: MongooseAdapter,
|
||||
const model = buildGlobalModel(this.payload.config);
|
||||
this.globals = model;
|
||||
|
||||
this.payload.globals.Model = model;
|
||||
|
||||
this.payload.config.globals.forEach((global) => {
|
||||
if (global.versions) {
|
||||
const versionModelName = getVersionsModelName(global);
|
||||
|
||||
@@ -2,7 +2,7 @@ import mongoose from 'mongoose';
|
||||
import buildSchema from './buildSchema';
|
||||
import { SanitizedConfig } from '../../config/types';
|
||||
import getBuildQueryPlugin from '../queries/buildQuery';
|
||||
import { GlobalModel } from '../../globals/config/types';
|
||||
import type { GlobalModel } from '../types';
|
||||
|
||||
export const buildGlobalModel = (config: SanitizedConfig): GlobalModel | null => {
|
||||
if (config.globals && config.globals.length > 0) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import { getLocalizedPaths } from './getLocalizedPaths';
|
||||
import { sanitizeQueryValue } from './sanitizeQueryValue';
|
||||
import { PathToQuery, validOperators } from '../../database/queryValidation/types';
|
||||
import { Payload } from '../..';
|
||||
import { MongooseAdapter } from '..';
|
||||
|
||||
type SearchParam = {
|
||||
path?: string,
|
||||
@@ -112,7 +113,7 @@ export async function buildSearchParam({
|
||||
}, i) => {
|
||||
const priorQueryResult = await priorQuery;
|
||||
|
||||
const SubModel = payload.collections[slug].Model;
|
||||
const SubModel = (payload.db as MongooseAdapter).collections[slug];
|
||||
|
||||
// On the "deepest" collection,
|
||||
// Search on the value passed through the query
|
||||
|
||||
@@ -1,12 +1,30 @@
|
||||
export type PaginatedDocs<T = any> = {
|
||||
docs: T[]
|
||||
totalDocs: number
|
||||
limit: number
|
||||
totalPages: number
|
||||
page?: number
|
||||
pagingCounter: number
|
||||
hasPrevPage: boolean
|
||||
hasNextPage: boolean
|
||||
prevPage?: number | null | undefined
|
||||
nextPage?: number | null | undefined
|
||||
import type { AggregatePaginateModel, IndexDefinition, IndexOptions, Model, PaginateModel } from 'mongoose';
|
||||
import type { BuildQueryArgs } from './queries/buildQuery';
|
||||
|
||||
|
||||
export interface CollectionModel extends Model<any>, PaginateModel<any>, AggregatePaginateModel<any>, PassportLocalModel {
|
||||
/** buildQuery is used to transform payload's where operator into what can be used by mongoose (e.g. id => _id) */
|
||||
buildQuery: (args: BuildQueryArgs) => Promise<Record<string, unknown>> // TODO: Delete this
|
||||
}
|
||||
type Register<T = any> = (doc: T, password: string) => T;
|
||||
|
||||
interface PassportLocalModel {
|
||||
register: Register
|
||||
authenticate: any
|
||||
}
|
||||
|
||||
|
||||
export interface AuthCollectionModel extends CollectionModel {
|
||||
resetPasswordToken: string;
|
||||
resetPasswordExpiration: Date;
|
||||
}
|
||||
|
||||
export type TypeOfIndex = {
|
||||
fields: IndexDefinition
|
||||
options?: IndexOptions
|
||||
}
|
||||
|
||||
|
||||
export interface GlobalModel extends Model<Document> {
|
||||
buildQuery: (query: unknown, locale?: string) => Promise<Record<string, unknown>>
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@ import type { MongooseAdapter } from '.';
|
||||
import type { UpdateOne } from '../database/types';
|
||||
import { ValidationError } from '../errors';
|
||||
import sanitizeInternalFields from '../utilities/sanitizeInternalFields';
|
||||
import i18nInit from '../translations/init';
|
||||
import { i18nInit } from '../translations/init';
|
||||
|
||||
export const updateOne: UpdateOne = async function updateOne(this: MongooseAdapter,
|
||||
{ collection, data, where, locale }) {
|
||||
{ collection, data, where, locale, req }) {
|
||||
const Model = this.collections[collection];
|
||||
|
||||
const query = await Model.buildQuery({
|
||||
@@ -27,7 +27,7 @@ export const updateOne: UpdateOne = async function updateOne(this: MongooseAdapt
|
||||
? new ValidationError([{
|
||||
message: 'Value must be unique',
|
||||
field: Object.keys(error.keyValue)[0],
|
||||
}], i18nInit(this.payload.config.i18n).t)
|
||||
}], req?.t ?? i18nInit(this.payload.config.i18n).t)
|
||||
: error;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,10 +7,9 @@ import mongoose from 'mongoose';
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { OperationArgs, Request as graphQLRequest } from 'graphql-http/lib/handler';
|
||||
import { SendMailOptions } from 'nodemailer';
|
||||
import { BulkOperationResult, Collection, CollectionModel } from './collections/config/types';
|
||||
import { BulkOperationResult, Collection } from './collections/config/types';
|
||||
import { EmailOptions, InitOptions, SanitizedConfig } from './config/types';
|
||||
import { TypeWithVersion } from './versions/types';
|
||||
import { PaginatedDocs } from './mongoose/types';
|
||||
|
||||
import { PayloadAuthenticate } from './express/middleware/authenticate';
|
||||
import { Globals } from './globals/config/types';
|
||||
@@ -61,6 +60,7 @@ import findConfig from './config/find';
|
||||
import { defaults as emailDefaults } from './email/defaults';
|
||||
import type { DatabaseAdapter } from '.';
|
||||
import { mongooseAdapter } from './mongoose';
|
||||
import type { PaginatedDocs } from './database/types';
|
||||
|
||||
/**
|
||||
* @description Payload
|
||||
@@ -75,7 +75,7 @@ export class BasePayload<TGeneratedTypes extends GeneratedTypes> {
|
||||
} = {};
|
||||
|
||||
versions: {
|
||||
[slug: string]: CollectionModel;
|
||||
[slug: string]: any; // TODO: Type this
|
||||
} = {};
|
||||
|
||||
globals: Globals;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { Payload } from '../index';
|
||||
import type { SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
|
||||
type Args = {
|
||||
payload: Payload
|
||||
@@ -8,13 +9,26 @@ type Args = {
|
||||
*/
|
||||
ids: (string|number)[]
|
||||
collectionConfig: SanitizedCollectionConfig
|
||||
req: PayloadRequest
|
||||
}
|
||||
export const deleteUserPreferences = ({ payload, ids, collectionConfig }: Args) => {
|
||||
export const deleteUserPreferences = ({ payload, ids, collectionConfig, req }: Args) => {
|
||||
if (collectionConfig.auth) {
|
||||
payload.collections['payload-preferences'].Model.deleteMany({
|
||||
payload.db.deleteMany({
|
||||
collection: 'payload-preferences',
|
||||
where: {
|
||||
user: { in: ids },
|
||||
userCollection: collectionConfig.slug,
|
||||
userCollection: {
|
||||
equals: 'collectionConfig.slug,',
|
||||
},
|
||||
},
|
||||
req,
|
||||
});
|
||||
}
|
||||
payload.collections['payload-preferences'].Model.deleteMany({ key: { in: ids.map((id) => `collection-${collectionConfig.slug}-${id}`) } });
|
||||
payload.db.deleteMany({
|
||||
collection: 'payload-preferences',
|
||||
where: {
|
||||
key: { in: ids.map((id) => `collection-${collectionConfig.slug}-${id}`) },
|
||||
},
|
||||
req,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -45,12 +45,14 @@ async function update(args: PreferenceUpdateRequest) {
|
||||
await payload.db.create({
|
||||
collection,
|
||||
data: preference,
|
||||
req,
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
await payload.db.updateOne({
|
||||
collection,
|
||||
where: filter,
|
||||
data: preference,
|
||||
req,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { i18n, InitOptions } from 'i18next';
|
||||
import deepmerge from 'deepmerge';
|
||||
import { defaultOptions } from './defaultOptions';
|
||||
|
||||
export default (options: InitOptions): i18n => {
|
||||
export function i18nInit(options: InitOptions): i18n {
|
||||
if (i18next.isInitialized) {
|
||||
return i18next;
|
||||
}
|
||||
@@ -11,4 +11,4 @@ export default (options: InitOptions): i18n => {
|
||||
...deepmerge(defaultOptions, options || {}),
|
||||
});
|
||||
return i18next;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,8 +12,9 @@ import { blocksFieldSeedData } from './collections/Blocks';
|
||||
import { localizedTextValue, namedTabDefaultValue, namedTabText, tabsDoc, tabsSlug } from './collections/Tabs';
|
||||
import { defaultNumber, numberDoc } from './collections/Number';
|
||||
import { dateDoc } from './collections/Date';
|
||||
import type { PaginatedDocs } from '../../src/mongoose/types';
|
||||
import type { RichTextField } from './payload-types';
|
||||
import type { PaginatedDocs } from '../../src/database/types';
|
||||
import type { MongooseAdapter } from '../../src/mongoose';
|
||||
|
||||
let client;
|
||||
let graphQLClient: GraphQLClient;
|
||||
@@ -228,7 +229,7 @@ describe('Fields', () => {
|
||||
const options: Record<string, IndexOptions> = {};
|
||||
|
||||
beforeAll(() => {
|
||||
indexes = payload.collections['indexed-fields'].Model.schema.indexes() as [Record<string, IndexDirection>, IndexOptions];
|
||||
indexes = (payload.db as MongooseAdapter).collections['indexed-fields'].schema.indexes() as [Record<string, IndexDirection>, IndexOptions];
|
||||
|
||||
indexes.forEach((index) => {
|
||||
const field = Object.keys(index[0])[0];
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
import qs from 'qs';
|
||||
import fetch from 'node-fetch';
|
||||
import type { Config } from '../../src/config/types';
|
||||
import type { PaginatedDocs } from '../../src/mongoose/types';
|
||||
import type { Where } from '../../src/types';
|
||||
import { devUser } from '../credentials';
|
||||
import type { PaginatedDocs } from '../../src/database/types';
|
||||
|
||||
type Args = {
|
||||
serverURL: string;
|
||||
|
||||
Reference in New Issue
Block a user