2 Commits

Author SHA1 Message Date
6834a79601 ValidateObject not in interface 2022-02-14 16:01:12 +01:00
336dea8147 ensure multiple index via db interface 2022-02-10 16:10:38 +01:00
3 changed files with 16 additions and 5 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,10 +22,9 @@ type Session interface {
type Database interface {
Session() Session
C(name string) Collection
// C(name string) Collection
Name() string
EnsureIndex(m ModelInterface) error
ValidateObject(m ModelInterface, changes bson.M) error
EnsureIndex(m ModelInterface, index ...Index) error
ReadDocument(m ModelInterface, selector bson.M) error
CreateDocument(m ModelInterface) error
ReadCollection(results interface{}, filter bson.M, selector bson.M, offset int, limit int, sort []string, pipelineModifier PipelineModifierFunction) error

View File

@@ -6,7 +6,7 @@ import (
)
// ValidateObject validates object via validator tag and custom method
func (db *MgoDatabase) ValidateObject(m ModelInterface, changes bson.M) error {
func ValidateObject(db Database, m ModelInterface, changes bson.M) error {
// first validate via struct tag
validator := validator.New(&validator.Config{
TagName: "validator",