chore: removes indexes from collection config (#3476)
This commit is contained in:
@@ -7,24 +7,23 @@ import type { IndexedField } from '../../payload-types'
|
||||
const beforeDuplicate: BeforeDuplicate<IndexedField> = ({ data }) => {
|
||||
return {
|
||||
...data,
|
||||
uniqueText: data.uniqueText ? `${data.uniqueText}-copy` : '',
|
||||
collapsibleLocalizedUnique: data.collapsibleLocalizedUnique
|
||||
? `${data.collapsibleLocalizedUnique}-copy`
|
||||
: '',
|
||||
collapsibleTextUnique: data.collapsibleTextUnique ? `${data.collapsibleTextUnique}-copy` : '',
|
||||
group: {
|
||||
...(data.group || {}),
|
||||
localizedUnique: data.group?.localizedUnique ? `${data.group?.localizedUnique}-copy` : '',
|
||||
},
|
||||
collapsibleTextUnique: data.collapsibleTextUnique ? `${data.collapsibleTextUnique}-copy` : '',
|
||||
collapsibleLocalizedUnique: data.collapsibleLocalizedUnique
|
||||
? `${data.collapsibleLocalizedUnique}-copy`
|
||||
: '',
|
||||
partOne: data.partOne ? `${data.partOne}-copy` : '',
|
||||
partTwo: data.partTwo ? `${data.partTwo}-copy` : '',
|
||||
uniqueText: data.uniqueText ? `${data.uniqueText}-copy` : '',
|
||||
}
|
||||
}
|
||||
|
||||
const IndexedFields: CollectionConfig = {
|
||||
slug: 'indexed-fields',
|
||||
// used to assert that versions also get indexes
|
||||
versions: true,
|
||||
admin: {
|
||||
hooks: {
|
||||
beforeDuplicate,
|
||||
@@ -33,9 +32,9 @@ const IndexedFields: CollectionConfig = {
|
||||
fields: [
|
||||
{
|
||||
name: 'text',
|
||||
type: 'text',
|
||||
required: true,
|
||||
index: true,
|
||||
required: true,
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
name: 'uniqueText',
|
||||
@@ -47,54 +46,41 @@ const IndexedFields: CollectionConfig = {
|
||||
type: 'point',
|
||||
},
|
||||
{
|
||||
type: 'group',
|
||||
name: 'group',
|
||||
fields: [
|
||||
{
|
||||
name: 'localizedUnique',
|
||||
localized: true,
|
||||
type: 'text',
|
||||
unique: true,
|
||||
localized: true,
|
||||
},
|
||||
{
|
||||
name: 'point',
|
||||
type: 'point',
|
||||
},
|
||||
],
|
||||
type: 'group',
|
||||
},
|
||||
{
|
||||
type: 'collapsible',
|
||||
label: 'Collapsible',
|
||||
fields: [
|
||||
{
|
||||
name: 'collapsibleLocalizedUnique',
|
||||
localized: true,
|
||||
type: 'text',
|
||||
unique: true,
|
||||
localized: true,
|
||||
},
|
||||
{
|
||||
name: 'collapsibleTextUnique',
|
||||
type: 'text',
|
||||
label: 'collapsibleTextUnique',
|
||||
type: 'text',
|
||||
unique: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'partOne',
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
name: 'partTwo',
|
||||
type: 'text',
|
||||
},
|
||||
],
|
||||
indexes: [
|
||||
{
|
||||
fields: { partOne: 1, partTwo: 1 },
|
||||
options: { unique: true, name: 'compound-index', sparse: true },
|
||||
label: 'Collapsible',
|
||||
type: 'collapsible',
|
||||
},
|
||||
],
|
||||
versions: true,
|
||||
}
|
||||
|
||||
export default IndexedFields
|
||||
|
||||
@@ -286,15 +286,6 @@ describe('Fields', () => {
|
||||
expect(options.uniqueText).toMatchObject({ unique: true })
|
||||
})
|
||||
|
||||
it('should have unique compound indexes', () => {
|
||||
expect(definitions.partOne).toEqual(1)
|
||||
expect(options.partOne).toMatchObject({
|
||||
name: 'compound-index',
|
||||
sparse: true,
|
||||
unique: true,
|
||||
})
|
||||
})
|
||||
|
||||
it('should have 2dsphere indexes on point fields', () => {
|
||||
expect(definitions.point).toEqual('2dsphere')
|
||||
})
|
||||
@@ -342,14 +333,6 @@ describe('Fields', () => {
|
||||
it('should have versions indexes', () => {
|
||||
expect(definitions['version.text']).toEqual(1)
|
||||
})
|
||||
it('should have version indexes from collection indexes', () => {
|
||||
expect(definitions['version.partOne']).toEqual(1)
|
||||
expect(options['version.partOne']).toMatchObject({
|
||||
name: 'compound-index',
|
||||
sparse: true,
|
||||
unique: true,
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('point', () => {
|
||||
@@ -440,32 +423,6 @@ describe('Fields', () => {
|
||||
return result.error
|
||||
}).toBeDefined()
|
||||
})
|
||||
it('should throw validation error saving on unique combined fields', async () => {
|
||||
await payload.delete({ collection: 'indexed-fields', where: {} })
|
||||
const data1 = {
|
||||
partOne: 'u',
|
||||
partTwo: 'u',
|
||||
text: 'a',
|
||||
uniqueText: 'a',
|
||||
}
|
||||
const data2 = {
|
||||
partOne: 'u',
|
||||
partTwo: 'u',
|
||||
text: 'b',
|
||||
uniqueText: 'b',
|
||||
}
|
||||
await payload.create({
|
||||
collection: 'indexed-fields',
|
||||
data: data1,
|
||||
})
|
||||
expect(async () => {
|
||||
const result = await payload.create({
|
||||
collection: 'indexed-fields',
|
||||
data: data2,
|
||||
})
|
||||
return result.error
|
||||
}).toBeDefined()
|
||||
})
|
||||
})
|
||||
|
||||
describe('array', () => {
|
||||
|
||||
Reference in New Issue
Block a user