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