diff --git a/core/collection_model.go b/core/collection_model.go index 0f27de26..bb326a06 100644 --- a/core/collection_model.go +++ b/core/collection_model.go @@ -660,13 +660,15 @@ func onCollectionDeleteExecute(e *CollectionEvent) error { // ------------------------------------------------------------------- func (c *Collection) initDefaultId() { - if c.Id == "" { - if c.System && c.Name != "" { - // for system collections we use crc32 checksum for consistency because they cannot be renamed - c.Id = "_pbc_" + crc32Checksum(c.Name) - } else { - c.Id = "_pbc_" + security.RandomStringWithAlphabet(10, DefaultIdAlphabet) - } + if c.Id != "" { + return // already set + } + + if c.System && c.Name != "" { + // for system collections we use crc32 checksum for consistency because they cannot be renamed + c.Id = "_pbc_" + crc32Checksum(c.Name) + } else { + c.Id = "_pbc_" + security.RandomStringWithAlphabet(10, DefaultIdAlphabet) } } @@ -791,24 +793,24 @@ func onCollectionSaveExecute(e *CollectionEvent) error { return nil } -func (m *Collection) initDefaultFields() { - switch m.Type { +func (c *Collection) initDefaultFields() { + switch c.Type { case CollectionTypeBase: - m.initIdField() + c.initIdField() case CollectionTypeAuth: - m.initIdField() - m.initPasswordField() - m.initTokenKeyField() - m.initEmailField() - m.initEmailVisibilityField() - m.initVerifiedField() + c.initIdField() + c.initPasswordField() + c.initTokenKeyField() + c.initEmailField() + c.initEmailVisibilityField() + c.initVerifiedField() case CollectionTypeView: // view fields are autogenerated } } -func (m *Collection) initIdField() { - field, _ := m.Fields.GetByName(FieldNameId).(*TextField) +func (c *Collection) initIdField() { + field, _ := c.Fields.GetByName(FieldNameId).(*TextField) if field == nil { // create default field field = &TextField{ @@ -823,7 +825,7 @@ func (m *Collection) initIdField() { } // prepend it - m.Fields = NewFieldsList(append([]Field{field}, m.Fields...)...) + c.Fields = NewFieldsList(append([]Field{field}, c.Fields...)...) } else { // enforce system defaults field.System = true @@ -833,11 +835,11 @@ func (m *Collection) initIdField() { } } -func (m *Collection) initPasswordField() { - field, _ := m.Fields.GetByName(FieldNamePassword).(*PasswordField) +func (c *Collection) initPasswordField() { + field, _ := c.Fields.GetByName(FieldNamePassword).(*PasswordField) if field == nil { // load default field - m.Fields.Add(&PasswordField{ + c.Fields.Add(&PasswordField{ Name: FieldNamePassword, System: true, Hidden: true, @@ -852,11 +854,11 @@ func (m *Collection) initPasswordField() { } } -func (m *Collection) initTokenKeyField() { - field, _ := m.Fields.GetByName(FieldNameTokenKey).(*TextField) +func (c *Collection) initTokenKeyField() { + field, _ := c.Fields.GetByName(FieldNameTokenKey).(*TextField) if field == nil { // load default field - m.Fields.Add(&TextField{ + c.Fields.Add(&TextField{ Name: FieldNameTokenKey, System: true, Hidden: true, @@ -873,21 +875,21 @@ func (m *Collection) initTokenKeyField() { } // ensure that there is a unique index for the field - if !dbutils.HasSingleColumnUniqueIndex(FieldNameTokenKey, m.Indexes) { - m.Indexes = append(m.Indexes, fmt.Sprintf( + if !dbutils.HasSingleColumnUniqueIndex(FieldNameTokenKey, c.Indexes) { + c.Indexes = append(c.Indexes, fmt.Sprintf( "CREATE UNIQUE INDEX `%s` ON `%s` (`%s`)", - m.fieldIndexName(FieldNameTokenKey), - m.Name, + c.fieldIndexName(FieldNameTokenKey), + c.Name, FieldNameTokenKey, )) } } -func (m *Collection) initEmailField() { - field, _ := m.Fields.GetByName(FieldNameEmail).(*EmailField) +func (c *Collection) initEmailField() { + field, _ := c.Fields.GetByName(FieldNameEmail).(*EmailField) if field == nil { // load default field - m.Fields.Add(&EmailField{ + c.Fields.Add(&EmailField{ Name: FieldNameEmail, System: true, Required: true, @@ -899,22 +901,22 @@ func (m *Collection) initEmailField() { } // ensure that there is a unique index for the email field - if !dbutils.HasSingleColumnUniqueIndex(FieldNameEmail, m.Indexes) { - m.Indexes = append(m.Indexes, fmt.Sprintf( + if !dbutils.HasSingleColumnUniqueIndex(FieldNameEmail, c.Indexes) { + c.Indexes = append(c.Indexes, fmt.Sprintf( "CREATE UNIQUE INDEX `%s` ON `%s` (`%s`) WHERE `%s` != ''", - m.fieldIndexName(FieldNameEmail), - m.Name, + c.fieldIndexName(FieldNameEmail), + c.Name, FieldNameEmail, FieldNameEmail, )) } } -func (m *Collection) initEmailVisibilityField() { - field, _ := m.Fields.GetByName(FieldNameEmailVisibility).(*BoolField) +func (c *Collection) initEmailVisibilityField() { + field, _ := c.Fields.GetByName(FieldNameEmailVisibility).(*BoolField) if field == nil { // load default field - m.Fields.Add(&BoolField{ + c.Fields.Add(&BoolField{ Name: FieldNameEmailVisibility, System: true, }) @@ -924,11 +926,11 @@ func (m *Collection) initEmailVisibilityField() { } } -func (m *Collection) initVerifiedField() { - field, _ := m.Fields.GetByName(FieldNameVerified).(*BoolField) +func (c *Collection) initVerifiedField() { + field, _ := c.Fields.GetByName(FieldNameVerified).(*BoolField) if field == nil { // load default field - m.Fields.Add(&BoolField{ + c.Fields.Add(&BoolField{ Name: FieldNameVerified, System: true, }) @@ -938,13 +940,13 @@ func (m *Collection) initVerifiedField() { } } -func (m *Collection) fieldIndexName(field string) string { +func (c *Collection) fieldIndexName(field string) string { name := "idx_" + field + "_" - if m.Id != "" { - name += m.Id - } else if m.Name != "" { - name += m.Name + if c.Id != "" { + name += c.Id + } else if c.Name != "" { + name += c.Name } else { name += security.PseudorandomString(10) }