### What?
This PR adds atomic array operations ($append and $remove) for
relationship fields with `hasMany: true` across all database adapters.
These operations allow developers to add or remove specific items from
relationship arrays without replacing the entire array.
New API:
```
// Append relationships (prevents duplicates)
await payload.db.updateOne({
collection: 'posts',
id: 'post123',
data: {
categories: { $append: ['featured', 'trending'] }
}
})
// Remove specific relationships
await payload.db.updateOne({
collection: 'posts',
id: 'post123',
data: {
tags: { $remove: ['draft', 'private'] }
}
})
// Works with polymorphic relationships
await payload.db.updateOne({
collection: 'posts',
id: 'post123',
data: {
relatedItems: {
$append: [
{ relationTo: 'categories', value: 'category-id' },
{ relationTo: 'tags', value: 'tag-id' }
]
}
}
})
```
### Why?
Currently, updating relationship arrays requires replacing the entire
array which requires fetching existing data before updates. Requiring
more implementation effort and potential for errors when using the API,
in particular for bulk updates.
### How?
#### Cross-Adapter Features:
- Polymorphic relationships: Full support for relationTo:
['collection1', 'collection2']
- Localized relationships: Proper locale handling when fields are
localized
- Duplicate prevention: Ensures `$append` doesn't create duplicates
- Order preservation: Appends to end of array maintaining order
- Bulk operations: Works with `updateMany` for bulk updates
#### MongoDB Implementation:
- Converts `$append` to native `$addToSet` (prevents duplicates in
contrast to `$push`)
- Converts `$remove` to native `$pull` (targeted removal)
#### Drizzle Implementation (Postgres/SQLite):
- Uses optimized batch `INSERT` with duplicate checking for `$append`
- Uses targeted `DELETE` queries for `$remove`
- Implements timestamp-based ordering for performance
- Handles locale columns conditionally based on schema
### Limitations
The current implementation is only on database-adapter level and not
(yet) for the local API. Implementation in the localAPI will be done
separately.
1461 lines
33 KiB
TypeScript
1461 lines
33 KiB
TypeScript
/* tslint:disable */
|
|
/* eslint-disable */
|
|
/**
|
|
* This file was automatically generated by Payload.
|
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
|
* and re-run `payload generate:types` to regenerate this file.
|
|
*/
|
|
|
|
/**
|
|
* Supported timezones in IANA format.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "supportedTimezones".
|
|
*/
|
|
export type SupportedTimezones =
|
|
| 'Pacific/Midway'
|
|
| 'Pacific/Niue'
|
|
| 'Pacific/Honolulu'
|
|
| 'Pacific/Rarotonga'
|
|
| 'America/Anchorage'
|
|
| 'Pacific/Gambier'
|
|
| 'America/Los_Angeles'
|
|
| 'America/Tijuana'
|
|
| 'America/Denver'
|
|
| 'America/Phoenix'
|
|
| 'America/Chicago'
|
|
| 'America/Guatemala'
|
|
| 'America/New_York'
|
|
| 'America/Bogota'
|
|
| 'America/Caracas'
|
|
| 'America/Santiago'
|
|
| 'America/Buenos_Aires'
|
|
| 'America/Sao_Paulo'
|
|
| 'Atlantic/South_Georgia'
|
|
| 'Atlantic/Azores'
|
|
| 'Atlantic/Cape_Verde'
|
|
| 'Europe/London'
|
|
| 'Europe/Berlin'
|
|
| 'Africa/Lagos'
|
|
| 'Europe/Athens'
|
|
| 'Africa/Cairo'
|
|
| 'Europe/Moscow'
|
|
| 'Asia/Riyadh'
|
|
| 'Asia/Dubai'
|
|
| 'Asia/Baku'
|
|
| 'Asia/Karachi'
|
|
| 'Asia/Tashkent'
|
|
| 'Asia/Calcutta'
|
|
| 'Asia/Dhaka'
|
|
| 'Asia/Almaty'
|
|
| 'Asia/Jakarta'
|
|
| 'Asia/Bangkok'
|
|
| 'Asia/Shanghai'
|
|
| 'Asia/Singapore'
|
|
| 'Asia/Tokyo'
|
|
| 'Asia/Seoul'
|
|
| 'Australia/Brisbane'
|
|
| 'Australia/Sydney'
|
|
| 'Pacific/Guam'
|
|
| 'Pacific/Noumea'
|
|
| 'Pacific/Auckland'
|
|
| 'Pacific/Fiji';
|
|
|
|
export interface Config {
|
|
auth: {
|
|
users: UserAuthOperations;
|
|
};
|
|
blocks: {};
|
|
collections: {
|
|
noTimeStamps: NoTimeStamp;
|
|
categories: Category;
|
|
simple: Simple;
|
|
'categories-custom-id': CategoriesCustomId;
|
|
posts: Post;
|
|
'error-on-unnamed-fields': ErrorOnUnnamedField;
|
|
'default-values': DefaultValue;
|
|
'relation-a': RelationA;
|
|
'relation-b': RelationB;
|
|
'pg-migrations': PgMigration;
|
|
'custom-schema': CustomSchema;
|
|
places: Place;
|
|
'virtual-relations': VirtualRelation;
|
|
'fields-persistance': FieldsPersistance;
|
|
'custom-ids': CustomId;
|
|
'fake-custom-ids': FakeCustomId;
|
|
'relationships-migration': RelationshipsMigration;
|
|
'compound-indexes': CompoundIndex;
|
|
aliases: Alias;
|
|
'blocks-docs': BlocksDoc;
|
|
'unique-fields': UniqueField;
|
|
users: User;
|
|
'payload-locked-documents': PayloadLockedDocument;
|
|
'payload-preferences': PayloadPreference;
|
|
'payload-migrations': PayloadMigration;
|
|
};
|
|
collectionsJoins: {};
|
|
collectionsSelect: {
|
|
noTimeStamps: NoTimeStampsSelect<false> | NoTimeStampsSelect<true>;
|
|
categories: CategoriesSelect<false> | CategoriesSelect<true>;
|
|
simple: SimpleSelect<false> | SimpleSelect<true>;
|
|
'categories-custom-id': CategoriesCustomIdSelect<false> | CategoriesCustomIdSelect<true>;
|
|
posts: PostsSelect<false> | PostsSelect<true>;
|
|
'error-on-unnamed-fields': ErrorOnUnnamedFieldsSelect<false> | ErrorOnUnnamedFieldsSelect<true>;
|
|
'default-values': DefaultValuesSelect<false> | DefaultValuesSelect<true>;
|
|
'relation-a': RelationASelect<false> | RelationASelect<true>;
|
|
'relation-b': RelationBSelect<false> | RelationBSelect<true>;
|
|
'pg-migrations': PgMigrationsSelect<false> | PgMigrationsSelect<true>;
|
|
'custom-schema': CustomSchemaSelect<false> | CustomSchemaSelect<true>;
|
|
places: PlacesSelect<false> | PlacesSelect<true>;
|
|
'virtual-relations': VirtualRelationsSelect<false> | VirtualRelationsSelect<true>;
|
|
'fields-persistance': FieldsPersistanceSelect<false> | FieldsPersistanceSelect<true>;
|
|
'custom-ids': CustomIdsSelect<false> | CustomIdsSelect<true>;
|
|
'fake-custom-ids': FakeCustomIdsSelect<false> | FakeCustomIdsSelect<true>;
|
|
'relationships-migration': RelationshipsMigrationSelect<false> | RelationshipsMigrationSelect<true>;
|
|
'compound-indexes': CompoundIndexesSelect<false> | CompoundIndexesSelect<true>;
|
|
aliases: AliasesSelect<false> | AliasesSelect<true>;
|
|
'blocks-docs': BlocksDocsSelect<false> | BlocksDocsSelect<true>;
|
|
'unique-fields': UniqueFieldsSelect<false> | UniqueFieldsSelect<true>;
|
|
users: UsersSelect<false> | UsersSelect<true>;
|
|
'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
|
|
'payload-preferences': PayloadPreferencesSelect<false> | PayloadPreferencesSelect<true>;
|
|
'payload-migrations': PayloadMigrationsSelect<false> | PayloadMigrationsSelect<true>;
|
|
};
|
|
db: {
|
|
defaultIDType: string;
|
|
};
|
|
globals: {
|
|
header: Header;
|
|
global: Global;
|
|
'global-2': Global2;
|
|
'global-3': Global3;
|
|
'virtual-relation-global': VirtualRelationGlobal;
|
|
};
|
|
globalsSelect: {
|
|
header: HeaderSelect<false> | HeaderSelect<true>;
|
|
global: GlobalSelect<false> | GlobalSelect<true>;
|
|
'global-2': Global2Select<false> | Global2Select<true>;
|
|
'global-3': Global3Select<false> | Global3Select<true>;
|
|
'virtual-relation-global': VirtualRelationGlobalSelect<false> | VirtualRelationGlobalSelect<true>;
|
|
};
|
|
locale: 'en' | 'es';
|
|
user: User & {
|
|
collection: 'users';
|
|
};
|
|
jobs: {
|
|
tasks: unknown;
|
|
workflows: unknown;
|
|
};
|
|
}
|
|
export interface UserAuthOperations {
|
|
forgotPassword: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
login: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
registerFirstUser: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
unlock: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "noTimeStamps".
|
|
*/
|
|
export interface NoTimeStamp {
|
|
id: string;
|
|
title?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "categories".
|
|
*/
|
|
export interface Category {
|
|
id: string;
|
|
title?: string | null;
|
|
hideout?: {
|
|
camera1?: {
|
|
time1Image?: (string | null) | Post;
|
|
};
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
_status?: ('draft' | 'published') | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "posts".
|
|
*/
|
|
export interface Post {
|
|
id: string;
|
|
title: string;
|
|
category?: (string | null) | Category;
|
|
categories?: (string | Category)[] | null;
|
|
categoryPoly?: {
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
} | null;
|
|
categoryPolyMany?:
|
|
| {
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
}[]
|
|
| null;
|
|
categoryCustomID?: (number | null) | CategoriesCustomId;
|
|
polymorphicRelations?:
|
|
| ({
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
} | {
|
|
relationTo: 'simple';
|
|
value: string | Simple;
|
|
})[]
|
|
| null;
|
|
localizedPolymorphicRelations?:
|
|
| ({
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
} | {
|
|
relationTo: 'simple';
|
|
value: string | Simple;
|
|
})[]
|
|
| null;
|
|
localized?: string | null;
|
|
text?: string | null;
|
|
number?: number | null;
|
|
blocks?:
|
|
| {
|
|
nested?:
|
|
| {
|
|
nested?: unknown[] | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'block-fourth';
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'block-third';
|
|
}[]
|
|
| null;
|
|
D1?: {
|
|
D2?: {
|
|
D3?: {
|
|
D4?: string | null;
|
|
};
|
|
};
|
|
};
|
|
testNestedGroup?: {
|
|
nestedLocalizedPolymorphicRelation?:
|
|
| ({
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
} | {
|
|
relationTo: 'simple';
|
|
value: string | Simple;
|
|
})[]
|
|
| null;
|
|
nestedLocalizedText?: string | null;
|
|
nestedText1?: string | null;
|
|
nestedText2?: string | null;
|
|
};
|
|
hasTransaction?: boolean | null;
|
|
throwAfterChange?: boolean | null;
|
|
arrayWithIDs?:
|
|
| {
|
|
text?: string | null;
|
|
textLocalized?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
arrayWithIDsLocalized?:
|
|
| {
|
|
text?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
blocksWithIDs?:
|
|
| {
|
|
text?: string | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'block-first';
|
|
}[]
|
|
| null;
|
|
group?: {
|
|
text?: string | null;
|
|
};
|
|
tab?: {
|
|
text?: string | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "categories-custom-id".
|
|
*/
|
|
export interface CategoriesCustomId {
|
|
id: number;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
_status?: ('draft' | 'published') | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "simple".
|
|
*/
|
|
export interface Simple {
|
|
id: string;
|
|
text?: string | null;
|
|
number?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "error-on-unnamed-fields".
|
|
*/
|
|
export interface ErrorOnUnnamedField {
|
|
id: string;
|
|
groupWithinUnnamedTab: {
|
|
text: string;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "default-values".
|
|
*/
|
|
export interface DefaultValue {
|
|
id: string;
|
|
title?: string | null;
|
|
defaultValue?: string | null;
|
|
array?:
|
|
| {
|
|
defaultValue?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
group?: {
|
|
defaultValue?: string | null;
|
|
};
|
|
select?: ('option0' | 'option1' | 'default') | null;
|
|
/**
|
|
* @minItems 2
|
|
* @maxItems 2
|
|
*/
|
|
point?: [number, number] | null;
|
|
escape?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relation-a".
|
|
*/
|
|
export interface RelationA {
|
|
id: string;
|
|
title?: string | null;
|
|
richText?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relation-b".
|
|
*/
|
|
export interface RelationB {
|
|
id: string;
|
|
title?: string | null;
|
|
relationship?: (string | null) | RelationA;
|
|
richText?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "pg-migrations".
|
|
*/
|
|
export interface PgMigration {
|
|
id: string;
|
|
relation1?: (string | null) | RelationA;
|
|
myArray?:
|
|
| {
|
|
relation2?: (string | null) | RelationB;
|
|
mySubArray?:
|
|
| {
|
|
relation3?: (string | null) | RelationB;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
myGroup?: {
|
|
relation4?: (string | null) | RelationB;
|
|
};
|
|
myBlocks?:
|
|
| {
|
|
relation5?: (string | null) | RelationA;
|
|
relation6?: (string | null) | RelationB;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'myBlock';
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-schema".
|
|
*/
|
|
export interface CustomSchema {
|
|
id: string;
|
|
text?: string | null;
|
|
localizedText?: string | null;
|
|
relationship?: (string | RelationA)[] | null;
|
|
select?: ('a' | 'b' | 'c')[] | null;
|
|
radio?: ('a' | 'b' | 'c') | null;
|
|
array?:
|
|
| {
|
|
text?: string | null;
|
|
localizedText?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
blocks?:
|
|
| {
|
|
text?: string | null;
|
|
localizedText?: string | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'block-second';
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
_status?: ('draft' | 'published') | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "places".
|
|
*/
|
|
export interface Place {
|
|
id: string;
|
|
country?: string | null;
|
|
city?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "virtual-relations".
|
|
*/
|
|
export interface VirtualRelation {
|
|
id: string;
|
|
postTitle?: string | null;
|
|
postsTitles?: string[] | null;
|
|
postCategoriesTitles?: string[] | null;
|
|
postTitleHidden?: string | null;
|
|
postCategoryTitle?: string | null;
|
|
postCategoryID?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
postCategoryCustomID?: number | null;
|
|
postID?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
postLocalized?: string | null;
|
|
post?: (string | null) | Post;
|
|
posts?: (string | Post)[] | null;
|
|
customID?: (string | null) | CustomId;
|
|
customIDValue?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
_status?: ('draft' | 'published') | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-ids".
|
|
*/
|
|
export interface CustomId {
|
|
id: string;
|
|
title?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
_status?: ('draft' | 'published') | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "fields-persistance".
|
|
*/
|
|
export interface FieldsPersistance {
|
|
id: string;
|
|
text?: string | null;
|
|
textHooked?: string | null;
|
|
array?:
|
|
| {
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
textWithinRow?: string | null;
|
|
textWithinCollapsible?: string | null;
|
|
textWithinTabs?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "fake-custom-ids".
|
|
*/
|
|
export interface FakeCustomId {
|
|
id: string;
|
|
title?: string | null;
|
|
group?: {
|
|
id?: string | null;
|
|
};
|
|
myTab?: {
|
|
id?: string | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relationships-migration".
|
|
*/
|
|
export interface RelationshipsMigration {
|
|
id: string;
|
|
relationship?: (string | null) | DefaultValue;
|
|
relationship_2?: {
|
|
relationTo: 'default-values';
|
|
value: string | DefaultValue;
|
|
} | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "compound-indexes".
|
|
*/
|
|
export interface CompoundIndex {
|
|
id: string;
|
|
one?: string | null;
|
|
two?: string | null;
|
|
three?: string | null;
|
|
group?: {
|
|
four?: string | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "aliases".
|
|
*/
|
|
export interface Alias {
|
|
id: string;
|
|
thisIsALongFieldNameThatCanCauseAPostgresErrorEvenThoughWeSetAShorterDBName?:
|
|
| {
|
|
nestedArray?:
|
|
| {
|
|
text?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "blocks-docs".
|
|
*/
|
|
export interface BlocksDoc {
|
|
id: string;
|
|
testBlocksLocalized?:
|
|
| {
|
|
text?: string | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'cta';
|
|
}[]
|
|
| null;
|
|
testBlocks?:
|
|
| {
|
|
text?: string | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'cta';
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "unique-fields".
|
|
*/
|
|
export interface UniqueField {
|
|
id: string;
|
|
slugField?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "users".
|
|
*/
|
|
export interface User {
|
|
id: string;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
email: string;
|
|
resetPasswordToken?: string | null;
|
|
resetPasswordExpiration?: string | null;
|
|
salt?: string | null;
|
|
hash?: string | null;
|
|
loginAttempts?: number | null;
|
|
lockUntil?: string | null;
|
|
sessions?:
|
|
| {
|
|
id: string;
|
|
createdAt?: string | null;
|
|
expiresAt: string;
|
|
}[]
|
|
| null;
|
|
password?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-locked-documents".
|
|
*/
|
|
export interface PayloadLockedDocument {
|
|
id: string;
|
|
document?:
|
|
| ({
|
|
relationTo: 'noTimeStamps';
|
|
value: string | NoTimeStamp;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'categories';
|
|
value: string | Category;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'simple';
|
|
value: string | Simple;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'categories-custom-id';
|
|
value: number | CategoriesCustomId;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'posts';
|
|
value: string | Post;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'error-on-unnamed-fields';
|
|
value: string | ErrorOnUnnamedField;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'default-values';
|
|
value: string | DefaultValue;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'relation-a';
|
|
value: string | RelationA;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'relation-b';
|
|
value: string | RelationB;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'pg-migrations';
|
|
value: string | PgMigration;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-schema';
|
|
value: string | CustomSchema;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'places';
|
|
value: string | Place;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'virtual-relations';
|
|
value: string | VirtualRelation;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'fields-persistance';
|
|
value: string | FieldsPersistance;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-ids';
|
|
value: string | CustomId;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'fake-custom-ids';
|
|
value: string | FakeCustomId;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'relationships-migration';
|
|
value: string | RelationshipsMigration;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'compound-indexes';
|
|
value: string | CompoundIndex;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'aliases';
|
|
value: string | Alias;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'blocks-docs';
|
|
value: string | BlocksDoc;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'unique-fields';
|
|
value: string | UniqueField;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'users';
|
|
value: string | User;
|
|
} | null);
|
|
globalSlug?: string | null;
|
|
user: {
|
|
relationTo: 'users';
|
|
value: string | User;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-preferences".
|
|
*/
|
|
export interface PayloadPreference {
|
|
id: string;
|
|
user: {
|
|
relationTo: 'users';
|
|
value: string | User;
|
|
};
|
|
key?: string | null;
|
|
value?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-migrations".
|
|
*/
|
|
export interface PayloadMigration {
|
|
id: string;
|
|
name?: string | null;
|
|
batch?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "noTimeStamps_select".
|
|
*/
|
|
export interface NoTimeStampsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "categories_select".
|
|
*/
|
|
export interface CategoriesSelect<T extends boolean = true> {
|
|
title?: T;
|
|
hideout?:
|
|
| T
|
|
| {
|
|
camera1?:
|
|
| T
|
|
| {
|
|
time1Image?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
_status?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "simple_select".
|
|
*/
|
|
export interface SimpleSelect<T extends boolean = true> {
|
|
text?: T;
|
|
number?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "categories-custom-id_select".
|
|
*/
|
|
export interface CategoriesCustomIdSelect<T extends boolean = true> {
|
|
id?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
_status?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "posts_select".
|
|
*/
|
|
export interface PostsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
category?: T;
|
|
categories?: T;
|
|
categoryPoly?: T;
|
|
categoryPolyMany?: T;
|
|
categoryCustomID?: T;
|
|
polymorphicRelations?: T;
|
|
localizedPolymorphicRelations?: T;
|
|
localized?: T;
|
|
text?: T;
|
|
number?: T;
|
|
blocks?:
|
|
| T
|
|
| {
|
|
'block-third'?:
|
|
| T
|
|
| {
|
|
nested?:
|
|
| T
|
|
| {
|
|
'block-fourth'?:
|
|
| T
|
|
| {
|
|
nested?: T | {};
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
D1?:
|
|
| T
|
|
| {
|
|
D2?:
|
|
| T
|
|
| {
|
|
D3?:
|
|
| T
|
|
| {
|
|
D4?: T;
|
|
};
|
|
};
|
|
};
|
|
hasTransaction?: T;
|
|
throwAfterChange?: T;
|
|
arrayWithIDs?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
textLocalized?: T;
|
|
id?: T;
|
|
};
|
|
arrayWithIDsLocalized?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
id?: T;
|
|
};
|
|
blocksWithIDs?:
|
|
| T
|
|
| {
|
|
'block-first'?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
group?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
};
|
|
tab?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "error-on-unnamed-fields_select".
|
|
*/
|
|
export interface ErrorOnUnnamedFieldsSelect<T extends boolean = true> {
|
|
groupWithinUnnamedTab?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "default-values_select".
|
|
*/
|
|
export interface DefaultValuesSelect<T extends boolean = true> {
|
|
title?: T;
|
|
defaultValue?: T;
|
|
array?:
|
|
| T
|
|
| {
|
|
defaultValue?: T;
|
|
id?: T;
|
|
};
|
|
group?:
|
|
| T
|
|
| {
|
|
defaultValue?: T;
|
|
};
|
|
select?: T;
|
|
point?: T;
|
|
escape?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relation-a_select".
|
|
*/
|
|
export interface RelationASelect<T extends boolean = true> {
|
|
title?: T;
|
|
richText?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relation-b_select".
|
|
*/
|
|
export interface RelationBSelect<T extends boolean = true> {
|
|
title?: T;
|
|
relationship?: T;
|
|
richText?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "pg-migrations_select".
|
|
*/
|
|
export interface PgMigrationsSelect<T extends boolean = true> {
|
|
relation1?: T;
|
|
myArray?:
|
|
| T
|
|
| {
|
|
relation2?: T;
|
|
mySubArray?:
|
|
| T
|
|
| {
|
|
relation3?: T;
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
myGroup?:
|
|
| T
|
|
| {
|
|
relation4?: T;
|
|
};
|
|
myBlocks?:
|
|
| T
|
|
| {
|
|
myBlock?:
|
|
| T
|
|
| {
|
|
relation5?: T;
|
|
relation6?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-schema_select".
|
|
*/
|
|
export interface CustomSchemaSelect<T extends boolean = true> {
|
|
text?: T;
|
|
localizedText?: T;
|
|
relationship?: T;
|
|
select?: T;
|
|
radio?: T;
|
|
array?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
localizedText?: T;
|
|
id?: T;
|
|
};
|
|
blocks?:
|
|
| T
|
|
| {
|
|
'block-second'?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
localizedText?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
_status?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "places_select".
|
|
*/
|
|
export interface PlacesSelect<T extends boolean = true> {
|
|
country?: T;
|
|
city?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "virtual-relations_select".
|
|
*/
|
|
export interface VirtualRelationsSelect<T extends boolean = true> {
|
|
postTitle?: T;
|
|
postsTitles?: T;
|
|
postCategoriesTitles?: T;
|
|
postTitleHidden?: T;
|
|
postCategoryTitle?: T;
|
|
postCategoryID?: T;
|
|
postCategoryCustomID?: T;
|
|
postID?: T;
|
|
postLocalized?: T;
|
|
post?: T;
|
|
posts?: T;
|
|
customID?: T;
|
|
customIDValue?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
_status?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "fields-persistance_select".
|
|
*/
|
|
export interface FieldsPersistanceSelect<T extends boolean = true> {
|
|
text?: T;
|
|
textHooked?: T;
|
|
array?:
|
|
| T
|
|
| {
|
|
id?: T;
|
|
};
|
|
textWithinRow?: T;
|
|
textWithinCollapsible?: T;
|
|
textWithinTabs?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-ids_select".
|
|
*/
|
|
export interface CustomIdsSelect<T extends boolean = true> {
|
|
id?: T;
|
|
title?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
_status?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "fake-custom-ids_select".
|
|
*/
|
|
export interface FakeCustomIdsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
group?:
|
|
| T
|
|
| {
|
|
id?: T;
|
|
};
|
|
myTab?:
|
|
| T
|
|
| {
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "relationships-migration_select".
|
|
*/
|
|
export interface RelationshipsMigrationSelect<T extends boolean = true> {
|
|
relationship?: T;
|
|
relationship_2?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "compound-indexes_select".
|
|
*/
|
|
export interface CompoundIndexesSelect<T extends boolean = true> {
|
|
one?: T;
|
|
two?: T;
|
|
three?: T;
|
|
group?:
|
|
| T
|
|
| {
|
|
four?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "aliases_select".
|
|
*/
|
|
export interface AliasesSelect<T extends boolean = true> {
|
|
thisIsALongFieldNameThatCanCauseAPostgresErrorEvenThoughWeSetAShorterDBName?:
|
|
| T
|
|
| {
|
|
nestedArray?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "blocks-docs_select".
|
|
*/
|
|
export interface BlocksDocsSelect<T extends boolean = true> {
|
|
testBlocksLocalized?:
|
|
| T
|
|
| {
|
|
cta?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
testBlocks?:
|
|
| T
|
|
| {
|
|
cta?:
|
|
| T
|
|
| {
|
|
text?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "unique-fields_select".
|
|
*/
|
|
export interface UniqueFieldsSelect<T extends boolean = true> {
|
|
slugField?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "users_select".
|
|
*/
|
|
export interface UsersSelect<T extends boolean = true> {
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
email?: T;
|
|
resetPasswordToken?: T;
|
|
resetPasswordExpiration?: T;
|
|
salt?: T;
|
|
hash?: T;
|
|
loginAttempts?: T;
|
|
lockUntil?: T;
|
|
sessions?:
|
|
| T
|
|
| {
|
|
id?: T;
|
|
createdAt?: T;
|
|
expiresAt?: T;
|
|
};
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-locked-documents_select".
|
|
*/
|
|
export interface PayloadLockedDocumentsSelect<T extends boolean = true> {
|
|
document?: T;
|
|
globalSlug?: T;
|
|
user?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-preferences_select".
|
|
*/
|
|
export interface PayloadPreferencesSelect<T extends boolean = true> {
|
|
user?: T;
|
|
key?: T;
|
|
value?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-migrations_select".
|
|
*/
|
|
export interface PayloadMigrationsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
batch?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "header".
|
|
*/
|
|
export interface Header {
|
|
id: string;
|
|
itemsLvl1?:
|
|
| {
|
|
label?: string | null;
|
|
itemsLvl2?:
|
|
| {
|
|
label?: string | null;
|
|
itemsLvl3?:
|
|
| {
|
|
label?: string | null;
|
|
itemsLvl4?:
|
|
| {
|
|
label?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global".
|
|
*/
|
|
export interface Global {
|
|
id: string;
|
|
text?: string | null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global-2".
|
|
*/
|
|
export interface Global2 {
|
|
id: string;
|
|
text?: string | null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global-3".
|
|
*/
|
|
export interface Global3 {
|
|
id: string;
|
|
text?: string | null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "virtual-relation-global".
|
|
*/
|
|
export interface VirtualRelationGlobal {
|
|
id: string;
|
|
postTitle?: string | null;
|
|
post?: (string | null) | Post;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "header_select".
|
|
*/
|
|
export interface HeaderSelect<T extends boolean = true> {
|
|
itemsLvl1?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
itemsLvl2?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
itemsLvl3?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
itemsLvl4?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global_select".
|
|
*/
|
|
export interface GlobalSelect<T extends boolean = true> {
|
|
text?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global-2_select".
|
|
*/
|
|
export interface Global2Select<T extends boolean = true> {
|
|
text?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "global-3_select".
|
|
*/
|
|
export interface Global3Select<T extends boolean = true> {
|
|
text?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "virtual-relation-global_select".
|
|
*/
|
|
export interface VirtualRelationGlobalSelect<T extends boolean = true> {
|
|
postTitle?: T;
|
|
post?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "auth".
|
|
*/
|
|
export interface Auth {
|
|
[k: string]: unknown;
|
|
}
|
|
|
|
|
|
declare module 'payload' {
|
|
// @ts-ignore
|
|
export interface GeneratedTypes extends Config {}
|
|
}
|