chore: removes indexes from collection config (#3476)

This commit is contained in:
Dan Ribbens
2023-10-08 14:48:14 -04:00
committed by GitHub
parent 1c3d969ef1
commit eb58d9e877
10 changed files with 54 additions and 204 deletions

View File

@@ -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

View File

@@ -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', () => {