ensure multiple index via db interface

This commit is contained in:
Sebastian Frank 2022-02-10 16:10:38 +01:00
parent f8f8cb2366
commit 336dea8147
Signed by: apairon
GPG Key ID: A0E05A8199CE3F57
2 changed files with 15 additions and 3 deletions

View File

@ -9,10 +9,22 @@ import (
)
// EnsureIndex ensured mongodb index reflecting model struct index tag
func (db *MgoDatabase) EnsureIndex(m ModelInterface) error {
func (db *MgoDatabase) EnsureIndex(m ModelInterface, index ...Index) error {
colName := GetCollectionName(m)
col := db.C(colName)
if len(index) > 0 {
// only ensure given index
for _, i := range index {
err := col.EnsureIndex(i)
if err != nil {
return err
}
}
return nil
}
// ensure index by struct fields
mType := reflect.TypeOf(m)
textFields := []string{}

View File

@ -22,9 +22,9 @@ type Session interface {
type Database interface {
Session() Session
C(name string) Collection
// C(name string) Collection
Name() string
EnsureIndex(m ModelInterface) error
EnsureIndex(m ModelInterface, index ...Index) error
ValidateObject(m ModelInterface, changes bson.M) error
ReadDocument(m ModelInterface, selector bson.M) error
CreateDocument(m ModelInterface) error