From b7e136771d2378a19fb4446875ad8f6315a938df Mon Sep 17 00:00:00 2001 From: Alcione Date: Wed, 25 May 2022 15:41:29 +0200 Subject: [PATCH 01/17] puting father first and mother second --- mygorm/test.db | Bin 81920 -> 81920 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mygorm/test.db b/mygorm/test.db index e973318eb49a0e0ac2d1bc8dba31f2a9a6d5f8c4..74f2790df8c3d1becb0a583b2ef6e20613a16e61 100644 GIT binary patch delta 320 zcmZo@U~On%-M}WmHJyQf8NWZ@XTIs11r^%)w4+$~8GL;i#2I)wIK(*^IeCo?jEr;* z%ybQm6b#L*OiZjy&GpQT3{B0s?O$?&l zCo?Apsy&(sq@6){@;Z5Om;uHn7ABVFmZl&B6rl#d#2^L)rB?Vl8pSb!tzIK93Daq0 XVq{=oVG7oXF4p`}e)~sxMt%hVAr?Q9 From 58d6082156b730530a992172a91addd65aa10502 Mon Sep 17 00:00:00 2001 From: Alcione Date: Wed, 25 May 2022 17:40:19 +0200 Subject: [PATCH 02/17] deleted .zshrc.save --- .zshrc.save | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .zshrc.save diff --git a/.zshrc.save b/.zshrc.save deleted file mode 100644 index 8b13789..0000000 --- a/.zshrc.save +++ /dev/null @@ -1 +0,0 @@ - From a683bfa7e0d160eaed02a4061cf2362504d803e3 Mon Sep 17 00:00:00 2001 From: Alcione Date: Wed, 1 Jun 2022 16:13:48 +0200 Subject: [PATCH 03/17] adding new meta data type --- mygorm/breedingbook.go | 62 ++++++++++++++++++++++++++++++++++++++++++ mygorm/gorm.go | 3 +- 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 mygorm/breedingbook.go diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go new file mode 100644 index 0000000..eaf87e3 --- /dev/null +++ b/mygorm/breedingbook.go @@ -0,0 +1,62 @@ +package mygorm + +import ( + "github.com/jinzhu/gorm" +) + +type TypeEnum struct { + slug string +} + +func (te TypeEnum) String() string { + return te.slug +} + +var ( + TypeUnknown = TypeEnum{""} + TypeString = TypeEnum{"string"} + TypeText = TypeEnum{"text"} + TypeCheckbox = TypeEnum{"checkbox"} + TypeInt = TypeEnum{"integer"} + TypeFloat = TypeEnum{"floating point"} + TypeDate = TypeEnum{"date"} + TypeDateTime = TypeEnum{"timestamp"} + TypeSelectOne = TypeEnum{"select one"} + TypeSelectMany = TypeEnum{"select many"} +) + +func NewTypeEnum(s string) TypeEnum { + switch s { + case TypeString.slug: + return TypeString + case TypeText.slug: + return TypeText + case TypeCheckbox.slug: + return TypeCheckbox + case TypeInt.slug: + return TypeInt + case TypeFloat.slug: + return TypeFloat + case TypeDate.slug: + return TypeDate + case TypeDateTime.slug: + return TypeDateTime + case TypeSelectOne.slug: + return TypeSelectOne + case TypeSelectMany.slug: + return TypeSelectMany + } + return TypeUnknown +} + +type MetaType struct { + gorm.Model + Name string + Group string + Type TypeEnum +} + +type MetaGroup struct { + gorm.Model + Name string +} diff --git a/mygorm/gorm.go b/mygorm/gorm.go index fc26b59..fbb3782 100644 --- a/mygorm/gorm.go +++ b/mygorm/gorm.go @@ -418,8 +418,7 @@ func FindAncestorsForDog(tx *gorm.DB, dog *Dog, generations int) ([]*Dog, error) return ancestors, err } -func findAncestors(tx *gorm.DB, dog *Dog, ancestors []*Dog, curGeneration, maxGeneration int, -) ([]*Dog, error) { +func findAncestors(tx *gorm.DB, dog *Dog, ancestors []*Dog, curGeneration, maxGeneration int) ([]*Dog, error) { f := &Dog{} if dog == nil || dog.FatherID == 0 { f = nil From db50f96894f64aa6f15503cdd013a5704c7e5cdf Mon Sep 17 00:00:00 2001 From: Alcione Date: Thu, 2 Jun 2022 16:26:25 +0200 Subject: [PATCH 04/17] writing meta types --- mygorm/breedingbook.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index eaf87e3..c165df9 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -25,6 +25,19 @@ var ( TypeSelectMany = TypeEnum{"select many"} ) +var AllTypeEnums = []string{ + TypeUnknown.slug, + TypeString.slug, + TypeText.slug, + TypeCheckbox.slug, + TypeInt.slug, + TypeFloat.slug, + TypeDate.slug, + TypeDateTime.slug, + TypeSelectOne.slug, + TypeSelectMany.slug, +} + func NewTypeEnum(s string) TypeEnum { switch s { case TypeString.slug: @@ -51,12 +64,13 @@ func NewTypeEnum(s string) TypeEnum { type MetaType struct { gorm.Model - Name string + Name string `gorm:"unique"` Group string - Type TypeEnum + Type TypeEnum `gorm:"unique"` } type MetaGroup struct { gorm.Model - Name string + Name string `gorm:"unique"` + Color string `gorm:"unique"` } From cc7174dfdf01e301b5d1cb47bf676368474fa562 Mon Sep 17 00:00:00 2001 From: Alcione Date: Tue, 7 Jun 2022 12:57:45 +0200 Subject: [PATCH 05/17] testDogsndParents - writing test --- mygorm/breedingbook.go | 24 +++++++++++++++------- mygorm/gorm.go | 4 ++-- mygorm/gorm_test.go | 44 +++++++++++++++++++++++++++++++++++++---- mygorm/test.db | Bin 81920 -> 131072 bytes 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index c165df9..52a771e 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -62,15 +62,25 @@ func NewTypeEnum(s string) TypeEnum { return TypeUnknown } -type MetaType struct { +type BaseMetaFeature struct { gorm.Model - Name string `gorm:"unique"` - Group string - Type TypeEnum `gorm:"unique"` + Name string `gorm:"unique"` + ShortName string `gorm:"unique"` + Type TypeEnum + GroupID uint + Group FeatureGroup `gorm:"foreignkey:GroupID;association_autocreate:false;association_autoupdate:false"` } -type MetaGroup struct { +type FeatureGroup struct { gorm.Model - Name string `gorm:"unique"` - Color string `gorm:"unique"` + Name string `gorm:"unique"` + ShortName string `gorm:"unique"` + ColorID uint + Color Color `gorm:"foreignkey:ColorID;association_autocreate:false;association_autoupdate:false"` +} + +type Color struct { + gorm.Model + Name string `gorm:"unique"` + HexValue string `gorm:"unique"` } diff --git a/mygorm/gorm.go b/mygorm/gorm.go index fbb3782..d165479 100644 --- a/mygorm/gorm.go +++ b/mygorm/gorm.go @@ -482,8 +482,8 @@ func Init(dbFname string) (*gorm.DB, error) { } if err = db.AutoMigrate(&Dog{}, &Chick{}, &Litter{}, &Mate1{}, &Mate2{}, &Mate3{}, - &Mate4{}, &Mate5{}, &Mate6{}, &Mate7{}, &Mate8{}, &Mate9{}, &Mate10{}).Error; err != nil { - + &Mate4{}, &Mate5{}, &Mate6{}, &Mate7{}, &Mate8{}, &Mate9{}, &Mate10{}, + &Color{}, &FeatureGroup{}, &BaseMetaFeature{}).Error; err != nil { return nil, fmt.Errorf("unable to migrate DB to current state: %v", err) } diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go index e9d15fc..003bdd0 100644 --- a/mygorm/gorm_test.go +++ b/mygorm/gorm_test.go @@ -32,14 +32,27 @@ func TestDogsAndParents(t *testing.T) { f := &Dog{Name: "Rex", HD: "A2", Gender: "M"} // write to DB - db.Create(m) - db.Create(f) + if err := db.Create(m).Error; err != nil { + t.Fatalf("Unable to create the Mother, %v", err) + } + + if err := db.Create(f).Error; err != nil { + t.Fatalf("Unable to create the Father, %v", err) + } + p1.MotherID = m.ID p1.FatherID = f.ID - db.Create(p1) + + if err := db.Create(p1).Error; err != nil { + t.Fatalf("Unable to create Puppy 1, %v", err) + } + p2.MotherID = m.ID p2.FatherID = f.ID - db.Create(p2) + + if err := db.Create(p2).Error; err != nil { + t.Fatalf("Unable to create Puppy 2, %v", err) + } // read from DB p1New := &Dog{} @@ -76,3 +89,26 @@ func TestDogsAndParents(t *testing.T) { t.Errorf("p2New should have got '%s' as father but instead it is '%s': %s", f.Name, p2New.Father.Name, spew.Sdump(p2New)) } } + +func TestColorAndFeatureGroups(t *testing.T) { + // create colors + c1 := &Color{Name: "red"} + c2 := &Color{Name: "green"} + c3 := &Color{Name: "blue"} + + // write to DB + if err := db.Create(c1).Error; err != nil { + t.Fatalf("Unable to create Color 1, %v", err) + } + + if err := db.Create(c2).Error; err != nil { + t.Fatalf("Unable to create Color 2, %v", err) + } + + if err := db.Create(c3).Error; err != nil { + t.Fatalf("Unable to create Color 3, %v", err) + } + + // create feature groups + +} diff --git a/mygorm/test.db b/mygorm/test.db index 74f2790df8c3d1becb0a583b2ef6e20613a16e61..c72cdcd7a831c50cc494c5f3d9dc2f9dcfc20a28 100644 GIT binary patch delta 2196 zcmcgu-*4Mg6u#F^{3D5dn`Wz71A}vFE5^Y zV>ufWit46(Q7Lbz0)J7_R*Q-@Dy34<1D=nL9cld>hhn_w!A*o_8T|<_zEfLs9LAVx+hvjmIa)<4Imj z%_LGYDRDwfr&CgTEH2H&;Cw+$V+2*kT#R6KYE${j)3So zK-b%uyoTO-4U(Nq1`f@jB#KkX9jK22Jh`$nXQu_ zO$A{CFRc~S%~D}gHeXjRsAaXL7G$Mn0s{vXeQNP!c7;FGkk2ierLI+l(Lem7JOJeE zUo}eq|I;b`_D%tSpm$jT-s^OW7k5+b6oSu}ATLrYz>h5e&tv*$Izs(K-J;GCUsJ>6 zH$>ibgFx=vuIKRtw!qx&cmP1H=>EO|3~v-8t?)Fw2g9w3BhYz-xa9&&AsK}*)z?ar)>UmY;qnQxFy)CwWi^0Kh z$39hAa$=Fpu;o&B(z58p!VNq~a<4{V<2g&313_ftOx?2BiI78*ZoXdW_B8b9rYnDH zipy|-!5cZ7=5;Sl;r-4nS*RYr{~2vXCDXu;wB%pD*hQaxehS`bG83VeE-E9 bybJO7L;UWO6bxa|qr;^q$3HpSXFk6J?Yo9| delta 603 zcmZo@;Am)IogghJ%D})N0>m&NI8nzKD5&Rrh!rTr$p0H8Au_Q*j)hT>|HouOfqLe~ zJfZ1klNsM_|2~tEm1#3O%Xe-eVQyZaIu^d^4E)RZ{rNugP2Vgi(9TyM#lp|v>&qa{ zz{|lQ&cVpZYh++#q-$WNYha{cXl7+%Vr6QsXJ%w*YG$r&U}R-rKuF%Bv^b;E(NMwB zh$)JhpxKr{!woG=3{CMEjwJ7snUe!Ge6qj1lp(Sk4NZ)UEbtivlAkmOir fK4N8VkrCPcWG Date: Tue, 7 Jun 2022 21:10:51 +0200 Subject: [PATCH 06/17] cleanin the code --- mygorm/gorm_test.go | 56 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go index 003bdd0..cbcfc9c 100644 --- a/mygorm/gorm_test.go +++ b/mygorm/gorm_test.go @@ -57,15 +57,15 @@ func TestDogsAndParents(t *testing.T) { // read from DB p1New := &Dog{} db.First(p1New, p1.ID) - if db.Model(p1New).Association("Mother").Error != nil { - t.Fatalf("Mother association error: %v", db.Model(p1New).Association("Mother").Error) + if err := db.Model(p1New).Association("Mother").Error; err != nil { + t.Fatalf("Mother association error: %v", err) } db.Model(p1New).Association("Mother").Find(&(p1New.Mother)) if p1New.Mother.ID != m.ID { t.Errorf("p1New should have got '%s' as mother but instead it is '%s': %s", m.Name, p1New.Mother.Name, spew.Sdump(p1New)) } - if db.Model(p1New).Association("Father").Error != nil { - t.Fatalf("Father association error: %v", db.Model(p1New).Association("Father").Error) + if err := db.Model(p1New).Association("Father").Error; err != nil { + t.Fatalf("Father association error: %v", err) } db.Model(p1New).Association("Father").Find(&(p1New.Father)) if p1New.Father.ID != f.ID { @@ -74,15 +74,15 @@ func TestDogsAndParents(t *testing.T) { p2New := &Dog{} db.First(p2New, p2.ID) - if db.Model(p2New).Association("Mother").Error != nil { - t.Fatalf("Mother association error: %v", db.Model(p2New).Association("Mother").Error) + if err := db.Model(p2New).Association("Mother").Error; err != nil { + t.Fatalf("Mother association error: %v", err) } db.Model(p2New).Association("Mother").Find(&(p2New.Mother)) if p2New.Mother.ID != m.ID { t.Errorf("p2New should have got '%s' as mother but instead it is '%s': %s", m.Name, p2New.Mother.Name, spew.Sdump(p2New)) } - if db.Model(p2New).Association("Father").Error != nil { - t.Fatalf("Father association error: %v", db.Model(p2New).Association("Father").Error) + if err := db.Model(p2New).Association("Father").Error; err != nil { + t.Fatalf("Father association error: %v", err) } db.Model(p2New).Association("Father").Find(&(p2New.Father)) if p2New.Father.ID != f.ID { @@ -110,5 +110,45 @@ func TestColorAndFeatureGroups(t *testing.T) { } // create feature groups + fg1 := &FeatureGroup{Name: "pigmente", ColorID: c1.ID} + fg2 := &FeatureGroup{Name: "Teeth", ColorID: c2.ID} + + // write to DB + if err := db.Create(fg1).Error; err != nil { + t.Fatalf("Unable to create feature group 1, %v", err) + } + + if err := db.Create(fg2).Error; err != nil { + t.Fatalf("Unable to create feature group 2, %v", err) + } + + // read from DB + fgNew := &FeatureGroup{} + if err := db.First(fgNew, fg1.ID).Error; err != nil { + t.Fatalf("Unable to read the feature group 1 , %v", err) + } + + if err := db.First(fgNew, fg2.ID).Error; err != nil { + t.Fatalf("Unable to read the feature group 2 , %v", err) + } + + // checking the association + if err := db.Model(fgNew).Association("Color").Error; err != nil { + t.Fatalf("Color association error: %v", err) + } + + // population association + db.Model(fgNew).Association("Color").Find(&(fgNew.Color)) + if fgNew.Color.ID != c1.ID { + t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c1.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + } + + if fgNew.Color.ID != c2.ID { + t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c2.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + } + + if fgNew.Color.ID != c3.ID { + t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c3.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + } } From 2e683bef1c1f1909cd651dfc7dad5a2a2d63c334 Mon Sep 17 00:00:00 2001 From: Alcione Date: Wed, 8 Jun 2022 15:21:06 +0200 Subject: [PATCH 07/17] Finished test --- .gitignore | 1 + mygorm/gorm_test.go | 56 +++++++++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index fee9c28..da0c271 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ # Test binary, build with `go test -c` *.test +test.db # Output of the go coverage tool, specifically when used with LiteIDE *.out diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go index cbcfc9c..e25330e 100644 --- a/mygorm/gorm_test.go +++ b/mygorm/gorm_test.go @@ -56,7 +56,10 @@ func TestDogsAndParents(t *testing.T) { // read from DB p1New := &Dog{} - db.First(p1New, p1.ID) + if err := db.First(p1New, p1.ID).Error; err != nil { + t.Fatalf("Unable to read puppy1 with ID %d: %v", p1.ID, err) + } + if err := db.Model(p1New).Association("Mother").Error; err != nil { t.Fatalf("Mother association error: %v", err) } @@ -73,7 +76,10 @@ func TestDogsAndParents(t *testing.T) { } p2New := &Dog{} - db.First(p2New, p2.ID) + if err := db.First(p2New, p2.ID).Error; err != nil { + t.Fatalf("Unable to read puppy2 with ID %d: %v", p2.ID, err) + } + if err := db.Model(p2New).Association("Mother").Error; err != nil { t.Fatalf("Mother association error: %v", err) } @@ -92,9 +98,8 @@ func TestDogsAndParents(t *testing.T) { func TestColorAndFeatureGroups(t *testing.T) { // create colors - c1 := &Color{Name: "red"} - c2 := &Color{Name: "green"} - c3 := &Color{Name: "blue"} + c1 := &Color{Name: "red", HexValue: "ff0000"} + c2 := &Color{Name: "green", HexValue: "00ff00"} // write to DB if err := db.Create(c1).Error; err != nil { @@ -105,13 +110,9 @@ func TestColorAndFeatureGroups(t *testing.T) { t.Fatalf("Unable to create Color 2, %v", err) } - if err := db.Create(c3).Error; err != nil { - t.Fatalf("Unable to create Color 3, %v", err) - } - // create feature groups - fg1 := &FeatureGroup{Name: "pigmente", ColorID: c1.ID} - fg2 := &FeatureGroup{Name: "Teeth", ColorID: c2.ID} + fg1 := &FeatureGroup{Name: "pigmente", ColorID: c1.ID, ShortName: "pigments"} + fg2 := &FeatureGroup{Name: "Teeth", ColorID: c2.ID, ShortName: "Teeth"} // write to DB if err := db.Create(fg1).Error; err != nil { @@ -123,32 +124,37 @@ func TestColorAndFeatureGroups(t *testing.T) { } // read from DB - fgNew := &FeatureGroup{} - if err := db.First(fgNew, fg1.ID).Error; err != nil { + fg1New := &FeatureGroup{} + if err := db.First(fg1New, fg1.ID).Error; err != nil { t.Fatalf("Unable to read the feature group 1 , %v", err) } - if err := db.First(fgNew, fg2.ID).Error; err != nil { - t.Fatalf("Unable to read the feature group 2 , %v", err) - } - // checking the association - if err := db.Model(fgNew).Association("Color").Error; err != nil { + if err := db.Model(fg1New).Association("Color").Error; err != nil { t.Fatalf("Color association error: %v", err) } // population association - db.Model(fgNew).Association("Color").Find(&(fgNew.Color)) - if fgNew.Color.ID != c1.ID { - t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c1.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + db.Model(fg1New).Association("Color").Find(&(fg1New.Color)) + if fg1New.Color.ID != c1.ID { + t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c1.Name, fg1New.Color.Name, spew.Sdump(fg1New)) + } + + fg2New := &FeatureGroup{} + // read from DB + if err := db.First(fg2New, fg2.ID).Error; err != nil { + t.Fatalf("Unable to read the feature group 2 , %v", err) } - if fgNew.Color.ID != c2.ID { - t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c2.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + // checking the association + if err := db.Model(fg2New).Association("Color").Error; err != nil { + t.Fatalf("Color association error: %v", err) } - if fgNew.Color.ID != c3.ID { - t.Errorf("p1New should have got '%s' as color but instead it is '%s': %s", c3.Name, fgNew.Color.Name, spew.Sdump(fgNew)) + // population association + db.Model(fg2New).Association("Color").Find(&(fg2New.Color)) + if fg2New.Color.ID != c2.ID { + t.Errorf("p2New should have got '%s' as color but instead it is '%s': %s", c2.Name, fg2New.Color.Name, spew.Sdump(fg2New)) } } From 56d0c44914fcaa7618b08d5c6c8e9b8638204264 Mon Sep 17 00:00:00 2001 From: Alcione Date: Thu, 9 Jun 2022 14:59:47 +0200 Subject: [PATCH 08/17] teste Test Base Meta Feature And Feature Groups --- mygorm/breedingbook.go | 20 +++--- mygorm/gorm_test.go | 142 +++++++++++++++++++++++++++++++++++++++++ mygorm/test.db | Bin 131072 -> 131072 bytes 3 files changed, 152 insertions(+), 10 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 52a771e..0111e88 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -64,23 +64,23 @@ func NewTypeEnum(s string) TypeEnum { type BaseMetaFeature struct { gorm.Model - Name string `gorm:"unique"` - ShortName string `gorm:"unique"` - Type TypeEnum - GroupID uint + Name string `gorm:"unique; not null"` + ShortName string `gorm:"unique; not null"` + Type TypeEnum `gorm:"not null"` + GroupID uint `gorm:"not null"` Group FeatureGroup `gorm:"foreignkey:GroupID;association_autocreate:false;association_autoupdate:false"` } type FeatureGroup struct { gorm.Model - Name string `gorm:"unique"` - ShortName string `gorm:"unique"` - ColorID uint - Color Color `gorm:"foreignkey:ColorID;association_autocreate:false;association_autoupdate:false"` + Name string `gorm:"unique; not null"` + ShortName string `gorm:"unique; not null"` + ColorID uint `gorm:"not null"` + Color Color `gorm:"foreignkey:ColorID;association_autocreate:false;association_autoupdate:false"` } type Color struct { gorm.Model - Name string `gorm:"unique"` - HexValue string `gorm:"unique"` + Name string `gorm:"unique; not null"` + HexValue string `gorm:"unique; not null"` } diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go index e25330e..8a97363 100644 --- a/mygorm/gorm_test.go +++ b/mygorm/gorm_test.go @@ -63,13 +63,16 @@ func TestDogsAndParents(t *testing.T) { if err := db.Model(p1New).Association("Mother").Error; err != nil { t.Fatalf("Mother association error: %v", err) } + db.Model(p1New).Association("Mother").Find(&(p1New.Mother)) if p1New.Mother.ID != m.ID { t.Errorf("p1New should have got '%s' as mother but instead it is '%s': %s", m.Name, p1New.Mother.Name, spew.Sdump(p1New)) } + if err := db.Model(p1New).Association("Father").Error; err != nil { t.Fatalf("Father association error: %v", err) } + db.Model(p1New).Association("Father").Find(&(p1New.Father)) if p1New.Father.ID != f.ID { t.Errorf("p1New should have got '%s' as father but instead it is '%s': %s", f.Name, p1New.Father.Name, spew.Sdump(p1New)) @@ -83,13 +86,16 @@ func TestDogsAndParents(t *testing.T) { if err := db.Model(p2New).Association("Mother").Error; err != nil { t.Fatalf("Mother association error: %v", err) } + db.Model(p2New).Association("Mother").Find(&(p2New.Mother)) if p2New.Mother.ID != m.ID { t.Errorf("p2New should have got '%s' as mother but instead it is '%s': %s", m.Name, p2New.Mother.Name, spew.Sdump(p2New)) } + if err := db.Model(p2New).Association("Father").Error; err != nil { t.Fatalf("Father association error: %v", err) } + db.Model(p2New).Association("Father").Find(&(p2New.Father)) if p2New.Father.ID != f.ID { t.Errorf("p2New should have got '%s' as father but instead it is '%s': %s", f.Name, p2New.Father.Name, spew.Sdump(p2New)) @@ -158,3 +164,139 @@ func TestColorAndFeatureGroups(t *testing.T) { } } + +func TestBaseMetaFeatureAndFeatureGroups(t *testing.T) { + // create colors + c3 := &Color{Name: "blue", HexValue: "0000ff"} + + // write to DB + if err := db.Create(c3).Error; err != nil { + t.Fatalf("Unable to create Color 3, %v", err) + } + + // create feature groups + fg3 := &FeatureGroup{Name: "pigmente2", ColorID: c3.ID, ShortName: "pigments2"} + fg4 := &FeatureGroup{Name: "teeth", ColorID: c3.ID, ShortName: "teeth"} + + // write to DB + if err := db.Create(fg3).Error; err != nil { + t.Fatalf("Unable to create feature group 1, %v", err) + } + + // write to DB + if err := db.Create(fg4).Error; err != nil { + t.Fatalf("Unable to create feature group 2, %v", err) + } + + // create BaseMetaFeature + f1 := &BaseMetaFeature{Name: "pigmente2", GroupID: fg3.ID, ShortName: "pigments2"} + f2 := &BaseMetaFeature{Name: "pigmente3", GroupID: fg3.ID, ShortName: "pigments3"} + f3 := &BaseMetaFeature{Name: "pigmente4", GroupID: fg3.ID, ShortName: "pigments4"} + f4 := &BaseMetaFeature{Name: "teeth", GroupID: fg4.ID, ShortName: "teeth"} + f5 := &BaseMetaFeature{Name: "teeth2", GroupID: fg4.ID, ShortName: "teeth2"} + + // f1 ------------------------ + + // write to DB + if err := db.Create(f1).Error; err != nil { + t.Fatalf("Unable to create feature 1, %v", err) + } + + // read from DB + f1New := &BaseMetaFeature{} + if err := db.First(f1New, f1.ID).Error; err != nil { + t.Fatalf("Unable to read the feature 1 , %v", err) + } + + // checking the association + if err := db.Model(f1New).Association("Group").Error; err != nil { + t.Fatalf("Group association error: %v", err) + } + + // population association + db.Model(f1New).Association("Group").Find(&(f1New.Group)) + if f1New.Group.ID != fg3.ID { + t.Errorf("f1New should have got '%s' as group but instead it is '%s': %s", fg3.Name, f1New.Group.Name, spew.Sdump(f1New)) + } + + // f2 ------------------------ + // write to DB + if err := db.Create(f2).Error; err != nil { + t.Fatalf("Unable to create feature 2, %v", err) + } + + // read from DB + f2New := &BaseMetaFeature{} + if err := db.First(f2New, f2.ID).Error; err != nil { + t.Fatalf("Unable to read the feature group 2, %v", err) + } + + // checking the association + if err := db.Model(f2New).Association("Group").Error; err != nil { + t.Fatalf("Group association error: %v", err) + } + + // population association + db.Model(f2New).Association("Group").Find(&(f2New.Group)) + if f2New.Group.ID != fg3.ID { + t.Errorf("f2New should have got '%s' as group but instead it is '%s': %s", fg3.Name, f2New.Group.Name, spew.Sdump(f2New)) + } + + // f3 ------------------------ + if err := db.Create(f3).Error; err != nil { + t.Fatalf("Unable to create feature group 3, %v", err) + } + + f3New := &BaseMetaFeature{} + if err := db.First(f3New, f3.ID).Error; err != nil { + t.Fatalf("Unable to reade the feature group 3, %v", err) + } + + if err := db.Model(f3New).Association("Group").Error; err != nil { + t.Fatalf("Group association error: %v", err) + } + + db.Model(f3New).Association("Group").Find(&(f3New.Group)) + if f3New.Group.ID != fg3.ID { + t.Errorf("f3new should have got '%s' as group but instead it is '%s': %s", fg3.Name, f3New.Group.Name, spew.Sdump(f3New)) + } + + // f4 ------------------------ + if err := db.Create(f4).Error; err != nil { + t.Fatalf("Unable to create feature group 4, %v", err) + } + + f4New := &BaseMetaFeature{} + if err := db.First(f4New, f4.ID).Error; err != nil { + t.Fatalf("Unable to reade the feature group 4, %v", err) + } + + if err := db.Model(f4New).Association("Group").Error; err != nil { + t.Fatalf("Group association err: %v", err) + } + + db.Model(f4New).Association("Group").Find(&(f4New.Group)) + if f4New.Group.ID != fg4.ID { + t.Errorf("f4New should have got '%s' as group but instead it is '%s': %s", fg4.Name, f4New.Group.Name, spew.Sdump(f4New)) + } + + // f5 ------------------------ + if err := db.Create(f5).Error; err != nil { + t.Fatalf("Unable to create feature group 5, %v", err) + } + + f5New := &BaseMetaFeature{} + if err := db.First(f5New, f5.ID).Error; err != nil { + t.Fatalf("Unable to reade the feature group 5, %v", err) + } + + if err := db.Model(f5New).Association("Group").Error; err != nil { + t.Fatalf("Group association err: %v", err) + } + + db.Model(f5New).Association("Group").Find(&(f5New.Group)) + if f5New.Group.ID != fg4.ID { + t.Errorf("f5New should have got '%s' as group but instead it is '%s': %s", fg4.Name, + f5New.Group.Name, spew.Sdump(f5New)) + } +} diff --git a/mygorm/test.db b/mygorm/test.db index c72cdcd7a831c50cc494c5f3d9dc2f9dcfc20a28..4aa6c94818c78ce9e58b5cf201b564653ef7c5cc 100644 GIT binary patch delta 2433 zcmbW2T}&KR6vywKJIl;0yK~qgUAKkoN{nTLrFUk(Ng8b$wWbtk08@(*Xc;I8EzJ%* z7)=(#lW$#VJ7S^@F=_flwA+NYeIUjMlfE>u8dDQmYg4~tRm9M$cV>6?qbx(>JlxF8 zx%W3`&iS8nW@p9OS@GO%yeHdykS)Xea6Wsk!~OR74#6J?;JI-2>&s$yPk*R;psQ;> zgP$rrhgm`%Y!DZ-?|CASUzJ_2~%*Gy17F4k)1mDtC+kI(*oXoiO1MHRi-FnY$(?CyVI$ zp5QK}%0sHAR40mQpMO92Ox3AKB9V+coU-h>--3+|9v<=t*5C)Y3Hh8av;@hWJW=q8 z5nUTPtxb;%jcFs(GignC?I0wKi%&!2>8Y8sI`8I40H2(ioJ#8?xAvU8>Lwr|Sc2C; zVzdo8bCd{XBANm<0~}Wq@q~k;74{R8Ga6;r*jO(oSn;ooj71VknV8v>^Rj(Bt!ZaW zAf>(7^0ILYq(bAVGIKMsY)@;WCXZ4#lO=(B0)l(+EBu}F(XXIQBu&`-4UXvGDy=CQ0A1_+<=Et@3oQx!$3N2o?PixxrDQh8v#DWHcTR>xKvY6^j z?XQ+MoShgyt(}?H)Z&e7SR$kS@%5PI`Nt#MoT{W}CTq|v$)FN67zfHNZnc_H#D(tqzGErN; zQ8HL4x2=jf5u=LJ$f~g0^oR|QkU>^;Y|1BmWRj;DzRaCu5y|t4Gf~DFNF?YpUYIyRZ?b}b5LaWU5WBdfBx5t{#1qRVmoqACUcea7 zC&#h(&CKD5N4uGHL=t+GQ?-Bi6u%|1 z|4#<~pFoS>^9!;u3vV-pyYIoPdHQp)rNiHs>sY@FNw%wl9=-OiQH_={sROTb@w zLyiarK_(9duHT&BIpsM%aUA7HV7tX3&3=z9gk={SKkF$L6=q{558j7ByMcfsVzZ!t z7}Ivf$&AHJoV-%(;)aHd&92jHr!tMyc&{r!fjKax#jsi)(5!Hrr0$ zF`aQASXwgF&oeO8RYwUN*zuVuN(z~IC8_DDMbl5uV60){{xjWkCgU+q^rXK1!z@N# iCKh1eJ>AYYm+>Lv_D2&K<(U|{HZunN*I$$%06_pG1Ir8m From 7ec062491d7212b24746c3bede8cfd471123cf73 Mon Sep 17 00:00:00 2001 From: Alcione Date: Fri, 10 Jun 2022 13:56:31 +0200 Subject: [PATCH 09/17] delete test.db --- mygorm/test.db | Bin 131072 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mygorm/test.db diff --git a/mygorm/test.db b/mygorm/test.db deleted file mode 100644 index 4aa6c94818c78ce9e58b5cf201b564653ef7c5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131072 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 From ca95e02fc53fedd9ec8063320cb0af31be1dc025 Mon Sep 17 00:00:00 2001 From: Alcione Date: Fri, 10 Jun 2022 16:31:18 +0200 Subject: [PATCH 10/17] adding more meta struct --- mygorm/breedingbook.go | 149 +++++++++++++++++++++++++++-------------- mygorm/gorm_test.go | 16 +++-- 2 files changed, 108 insertions(+), 57 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 0111e88..88e4839 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -4,62 +4,46 @@ import ( "github.com/jinzhu/gorm" ) -type TypeEnum struct { - slug string -} - -func (te TypeEnum) String() string { - return te.slug -} +type TypeEnum string -var ( - TypeUnknown = TypeEnum{""} - TypeString = TypeEnum{"string"} - TypeText = TypeEnum{"text"} - TypeCheckbox = TypeEnum{"checkbox"} - TypeInt = TypeEnum{"integer"} - TypeFloat = TypeEnum{"floating point"} - TypeDate = TypeEnum{"date"} - TypeDateTime = TypeEnum{"timestamp"} - TypeSelectOne = TypeEnum{"select one"} - TypeSelectMany = TypeEnum{"select many"} +const ( + TypeUnknown = TypeEnum("") + TypeString = TypeEnum("string") // done + TypeText = TypeEnum("text") // done + TypeCheckbox = TypeEnum("checkbox") // done + TypeInt = TypeEnum("integer") // int64 + TypeFloat = TypeEnum("floating point") //float64 + TypeDate = TypeEnum("date") //time.Time + TypeDateTime = TypeEnum("timestamp") //time.Time + TypeSelectOne = TypeEnum("select one") // string done + TypeSelectMany = TypeEnum("select many") // []string ) -var AllTypeEnums = []string{ - TypeUnknown.slug, - TypeString.slug, - TypeText.slug, - TypeCheckbox.slug, - TypeInt.slug, - TypeFloat.slug, - TypeDate.slug, - TypeDateTime.slug, - TypeSelectOne.slug, - TypeSelectMany.slug, +var AllTypeEnums = []TypeEnum{ + TypeUnknown, + TypeString, + TypeText, + TypeCheckbox, + TypeInt, + TypeFloat, + TypeDate, + TypeDateTime, + TypeSelectOne, + TypeSelectMany, } -func NewTypeEnum(s string) TypeEnum { - switch s { - case TypeString.slug: - return TypeString - case TypeText.slug: - return TypeText - case TypeCheckbox.slug: - return TypeCheckbox - case TypeInt.slug: - return TypeInt - case TypeFloat.slug: - return TypeFloat - case TypeDate.slug: - return TypeDate - case TypeDateTime.slug: - return TypeDateTime - case TypeSelectOne.slug: - return TypeSelectOne - case TypeSelectMany.slug: - return TypeSelectMany - } - return TypeUnknown +type QualityEnum string + +const ( + QualityNeutral = QualityEnum("neutral") + QualityBad = QualityEnum("bad") + QualityPerfect = QualityEnum("perfect") +) + +var AllQualityEnums = []QualityEnum{ + QualityNeutral, + QualityBad, + QualityPerfect, } type BaseMetaFeature struct { @@ -84,3 +68,66 @@ type Color struct { Name string `gorm:"unique; not null"` HexValue string `gorm:"unique; not null"` } + +type SelectOneMetaFeature struct { + BaseID uint `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type SelectOneFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value string `gorm:"not null"` +} + +type CheckBoxMetaFeature struct { + BaseID uint `gorm:"not null"` + Value bool `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type CheckBoxFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value bool `gorm:"not null"` +} + +type StringMetaFeature struct { + BaseID uint `gorm:"not null"` + MinLength uint `gorm:"not null"` + MaxLength uint `gorm:"not null"` +} + +type StringFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type TextMetaFeature struct { + BaseID uint `gorm:"not null"` + MinLength uint `gorm:"not null"` + MaxLength uint `gorm:"not null"` +} + +type TextFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type IntegerMetaFeature struct { + BaseID uint `gorm:"not null"` + Value int64 `gorm:"not null"` + SmallerThan bool `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type IntegerFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value int64 `gorm:"not null"` +} diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go index 8a97363..a04cf03 100644 --- a/mygorm/gorm_test.go +++ b/mygorm/gorm_test.go @@ -189,11 +189,11 @@ func TestBaseMetaFeatureAndFeatureGroups(t *testing.T) { } // create BaseMetaFeature - f1 := &BaseMetaFeature{Name: "pigmente2", GroupID: fg3.ID, ShortName: "pigments2"} - f2 := &BaseMetaFeature{Name: "pigmente3", GroupID: fg3.ID, ShortName: "pigments3"} - f3 := &BaseMetaFeature{Name: "pigmente4", GroupID: fg3.ID, ShortName: "pigments4"} - f4 := &BaseMetaFeature{Name: "teeth", GroupID: fg4.ID, ShortName: "teeth"} - f5 := &BaseMetaFeature{Name: "teeth2", GroupID: fg4.ID, ShortName: "teeth2"} + f1 := &BaseMetaFeature{Name: "pigmente2", GroupID: fg3.ID, ShortName: "pigments2", Type: TypeText} + f2 := &BaseMetaFeature{Name: "pigmente3", GroupID: fg3.ID, ShortName: "pigments3", Type: TypeString} + f3 := &BaseMetaFeature{Name: "pigmente4", GroupID: fg3.ID, ShortName: "pigments4", Type: TypeCheckbox} + f4 := &BaseMetaFeature{Name: "teeth", GroupID: fg4.ID, ShortName: "teeth", Type: TypeDate} + f5 := &BaseMetaFeature{Name: "teeth2", GroupID: fg4.ID, ShortName: "teeth2", Type: TypeFloat} // f1 ------------------------ @@ -205,7 +205,11 @@ func TestBaseMetaFeatureAndFeatureGroups(t *testing.T) { // read from DB f1New := &BaseMetaFeature{} if err := db.First(f1New, f1.ID).Error; err != nil { - t.Fatalf("Unable to read the feature 1 , %v", err) + t.Fatalf("Unable to read the feature 1, %v", err) + } + + if f1New.Type != TypeText { + t.Errorf("f1New should have got '%s' as type but instead it is '%s': %s", TypeText, f1New.Type, spew.Sdump(f1New)) } // checking the association From ed2b6a419ef21fae3bd91406f8c214f44ed8eb80 Mon Sep 17 00:00:00 2001 From: Alcione Date: Mon, 13 Jun 2022 16:14:38 +0200 Subject: [PATCH 11/17] add some meta data --- mygorm/breedingbook.go | 68 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 13 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 88e4839..987ca12 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -2,21 +2,22 @@ package mygorm import ( "github.com/jinzhu/gorm" + "time" ) type TypeEnum string const ( TypeUnknown = TypeEnum("") - TypeString = TypeEnum("string") // done - TypeText = TypeEnum("text") // done - TypeCheckbox = TypeEnum("checkbox") // done - TypeInt = TypeEnum("integer") // int64 - TypeFloat = TypeEnum("floating point") //float64 - TypeDate = TypeEnum("date") //time.Time - TypeDateTime = TypeEnum("timestamp") //time.Time - TypeSelectOne = TypeEnum("select one") // string done - TypeSelectMany = TypeEnum("select many") // []string + TypeString = TypeEnum("string") + TypeText = TypeEnum("text") + TypeCheckbox = TypeEnum("checkbox") + TypeInt = TypeEnum("integer") + TypeFloat = TypeEnum("floating point") + TypeDate = TypeEnum("date") + TypeDateTime = TypeEnum("timestamp") + TypeSelectOne = TypeEnum("select one") + TypeSelectMany = TypeEnum("select many") // []string ) var AllTypeEnums = []TypeEnum{ @@ -120,10 +121,13 @@ type TextFeature struct { } type IntegerMetaFeature struct { - BaseID uint `gorm:"not null"` - Value int64 `gorm:"not null"` - SmallerThan bool `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` + BaseID uint `gorm:"not null"` + NeutralMin int64 `gorm:"not null"` + NeutralMax int64 `gorm:"not null"` + BadMin int64 `gorm:"not null"` + BadMax int64 `gorm:"not null"` + PerfectMin int64 `gorm:"not null"` + PerfectMax int64 `gorm:"not null"` } type IntegerFeature struct { @@ -131,3 +135,41 @@ type IntegerFeature struct { DogID uint `gorm:"not null"` Value int64 `gorm:"not null"` } + +type FloatMetaFeature struct { + BaseID uint `gorm:"not null"` + NeutralMin float64 `gorm:"not null"` + NeutralMax float64 `gorm:"not null"` + BadMin float64 `gorm:"not null"` + BadMax float64 `gorm:"not null"` + PerfectMin float64 `gorm:"not null"` + PerfectMax float64 `gorm:"not null"` +} + +type FloatFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value float64 `gorm:"not null"` +} + +type DateMetaFeature struct { + BaseID uint `gorm:"not null"` + // still decide +} + +type DateFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value time.Time `gorm:"not null"` +} + +type TimestampMetaFeature struct { + BaseID uint `gorm:"not null"` + // still decide +} + +type TimestampFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Value time.Time `gorm:"not null"` +} From b631336691ef50442f129f274743fbd5602e8fe7 Mon Sep 17 00:00:00 2001 From: Alcione Date: Thu, 16 Jun 2022 14:03:14 +0200 Subject: [PATCH 12/17] add new meta data --- mygorm/breedingbook.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 987ca12..16794aa 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -173,3 +173,15 @@ type TimestampFeature struct { DogID uint `gorm:"not null"` Value time.Time `gorm:"not null"` } + +type SelectManyMetaFeature struct { + BaseID uint `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` +} + +type SelectManyFeature struct { + FeatureID uint `gorm:"not null"` + DogID uint `gorm:"not null"` + Values []string `gorm:"not null"` +} From b05ec3fc42b188776a57ff480e7155e50d57f652 Mon Sep 17 00:00:00 2001 From: Alcione Date: Mon, 20 Jun 2022 16:10:33 +0200 Subject: [PATCH 13/17] changing the dog struct and meta data --- mygorm/breedingbook.go | 109 ++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 67 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 16794aa..ed3d84e 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -47,6 +47,26 @@ var AllQualityEnums = []QualityEnum{ QualityPerfect, } +type DogTest struct { + gorm.Model + Name string `gorm:"unique; not null"` + SelectOne1 string `gorm:"not null"` + SelectOne2 string `gorm:"not null"` + SelectOne3 string `gorm:"not null"` + CheckBox1 bool `gorm:"not null"` + CheckBox2 bool `gorm:"not null"` + CheckBox3 bool `gorm:"not null"` + String1 string `gorm:"not null"` + String1Quality QualityEnum `gorm:"not null"` + Text1 string `gorm:"not null"` + Text1Quality QualityEnum `gorm:"not null"` + Integer1 int64 `gorm:"not null"` + Float1 float64 `gorm:"not null"` + Date1 time.Time `gorm:"not null"` + Timestamp1 time.Time `gorm:"not null"` + SelectMany1 []string `gorm:"not null"` +} + type BaseMetaFeature struct { gorm.Model Name string `gorm:"unique; not null"` @@ -71,57 +91,37 @@ type Color struct { } type SelectOneMetaFeature struct { - BaseID uint `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` -} - -type SelectOneFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value string `gorm:"not null"` + BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` + Order int `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` } type CheckBoxMetaFeature struct { - BaseID uint `gorm:"not null"` - Value bool `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` -} - -type CheckBoxFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value bool `gorm:"not null"` + BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` + QualityChecked QualityEnum `gorm:"not null"` + QualityUnchecked QualityEnum `gorm:"not null"` } type StringMetaFeature struct { BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } -type StringFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` -} - type TextMetaFeature struct { BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } -type TextFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` -} - type IntegerMetaFeature struct { BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` NeutralMin int64 `gorm:"not null"` NeutralMax int64 `gorm:"not null"` BadMin int64 `gorm:"not null"` @@ -130,14 +130,9 @@ type IntegerMetaFeature struct { PerfectMax int64 `gorm:"not null"` } -type IntegerFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value int64 `gorm:"not null"` -} - type FloatMetaFeature struct { BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` NeutralMin float64 `gorm:"not null"` NeutralMax float64 `gorm:"not null"` BadMin float64 `gorm:"not null"` @@ -146,42 +141,22 @@ type FloatMetaFeature struct { PerfectMax float64 `gorm:"not null"` } -type FloatFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value float64 `gorm:"not null"` -} - type DateMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` // still decide } -type DateFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value time.Time `gorm:"not null"` -} - type TimestampMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` // still decide } -type TimestampFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Value time.Time `gorm:"not null"` -} - type SelectManyMetaFeature struct { - BaseID uint `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` -} - -type SelectManyFeature struct { - FeatureID uint `gorm:"not null"` - DogID uint `gorm:"not null"` - Values []string `gorm:"not null"` + BaseID uint `gorm:"not null"` + ColumnNum int `gorm:"not null"` + Order int `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` } From a56890f247e293c77855fa43ff4d4a3f61145365 Mon Sep 17 00:00:00 2001 From: Alcione Date: Tue, 21 Jun 2022 18:31:57 +0200 Subject: [PATCH 14/17] init gorm breeding book --- main.go | 5 +++++ mygorm/breedingbook.go | 18 ++++++++++++++++++ mygorm/breedingbookfunc.go | 15 +++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 mygorm/breedingbookfunc.go diff --git a/main.go b/main.go index 8d76cf1..f7f7392 100644 --- a/main.go +++ b/main.go @@ -64,6 +64,11 @@ func main() { } db.SetLogger(log.New(f, "\n", 0)) + err = mygorm.Init2(db) + if err != nil { + log.Fatal(err) + } + // Initalize QOR Admin adm, err := myqor.Init(db, assetFS, workDir) if err != nil { diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index ed3d84e..73d944a 100644 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -57,14 +57,32 @@ type DogTest struct { CheckBox2 bool `gorm:"not null"` CheckBox3 bool `gorm:"not null"` String1 string `gorm:"not null"` + String2 string `gorm:"not null"` + String3 string `gorm:"not null"` String1Quality QualityEnum `gorm:"not null"` + String2Quality QualityEnum `gorm:"not null"` + String3Quality QualityEnum `gorm:"not null"` Text1 string `gorm:"not null"` + Text2 string `gorm:"not null"` + Text3 string `gorm:"not null"` Text1Quality QualityEnum `gorm:"not null"` + Text2Quality QualityEnum `gorm:"not null"` + Text3Quality QualityEnum `gorm:"not null"` Integer1 int64 `gorm:"not null"` + Integer2 int64 `gorm:"not null"` + Integer3 int64 `gorm:"not null"` Float1 float64 `gorm:"not null"` + Float2 float64 `gorm:"not null"` + Float3 float64 `gorm:"not null"` Date1 time.Time `gorm:"not null"` + Date2 time.Time `gorm:"not null"` + Date3 time.Time `gorm:"not null"` Timestamp1 time.Time `gorm:"not null"` + Timestamp2 time.Time `gorm:"not null"` + Timestamp3 time.Time `gorm:"not null"` SelectMany1 []string `gorm:"not null"` + SelectMany2 []string `gorm:"not null"` + SelectMany3 []string `gorm:"not null"` } type BaseMetaFeature struct { diff --git a/mygorm/breedingbookfunc.go b/mygorm/breedingbookfunc.go new file mode 100644 index 0000000..b3d9d08 --- /dev/null +++ b/mygorm/breedingbookfunc.go @@ -0,0 +1,15 @@ +package mygorm + +import ( + "fmt" + "github.com/jinzhu/gorm" +) + +func Init2(db *gorm.DB) error { + if err := db.AutoMigrate(&DogTest{}, &BaseMetaFeature{}, &FeatureGroup{}, &Color{}, &SelectOneMetaFeature{}, &CheckBoxMetaFeature{}, + &StringMetaFeature{}, &TextMetaFeature{}, &IntegerMetaFeature{}, &FloatMetaFeature{}, &DateMetaFeature{}, &TimestampMetaFeature{}, &SelectManyMetaFeature{}).Error; err != nil { + return fmt.Errorf("unable to migrate DB to current state: %v", err) + } + + return nil +} From 6fe4d3509c0a44c52bd93f12313e3019395e9626 Mon Sep 17 00:00:00 2001 From: alcione Date: Wed, 3 Aug 2022 16:21:49 +0200 Subject: [PATCH 15/17] adding new tables --- .gitignore | 0 DogBreedingBackup.db | Bin 0 -> 237568 bytes LICENSE | 0 README.md | 0 TODO.md | 0 app/views/qor/action.tmpl | 0 app/views/qor/actions/9.action.tmpl | 0 .../qor/actions/header/1.page_title.tmpl | 0 app/views/qor/actions/header/5.userinfo.tmpl | 0 app/views/qor/actions/header/6.searchbar.tmpl | 0 app/views/qor/actions/index/5.scope.tmpl | 0 app/views/qor/actions/index/9.action.tmpl | 0 .../qor/actions/index/9.advanced_filter.tmpl | 0 .../ancestors/assets/qor_admin_default.css | 0 .../qor/ancestors/assets/qor_admin_default.js | 0 app/views/qor/ancestors/assets/vendors.js | 0 app/views/qor/ancestors/index.html.tmpl | 0 app/views/qor/assets/fonts/MaterialIcons.woff | Bin app/views/qor/assets/fonts/Roboto-Black.ttf | Bin .../qor/assets/fonts/Roboto-BlackItalic.ttf | Bin app/views/qor/assets/fonts/Roboto-Bold.ttf | Bin .../qor/assets/fonts/Roboto-BoldItalic.ttf | Bin app/views/qor/assets/fonts/Roboto-Italic.ttf | Bin app/views/qor/assets/fonts/Roboto-Light.ttf | Bin .../qor/assets/fonts/Roboto-LightItalic.ttf | Bin app/views/qor/assets/fonts/Roboto-Medium.ttf | Bin .../qor/assets/fonts/Roboto-MediumItalic.ttf | Bin app/views/qor/assets/fonts/Roboto-Regular.ttf | Bin app/views/qor/assets/fonts/Roboto-Thin.ttf | Bin .../qor/assets/fonts/Roboto-ThinItalic.ttf | Bin .../qor/assets/fonts/RobotoCondensed-Bold.ttf | Bin .../fonts/RobotoCondensed-BoldItalic.ttf | Bin .../assets/fonts/RobotoCondensed-Italic.ttf | Bin .../assets/fonts/RobotoCondensed-Light.ttf | Bin .../fonts/RobotoCondensed-LightItalic.ttf | Bin .../assets/fonts/RobotoCondensed-Regular.ttf | Bin .../qor/assets/images/bg-transparents.png | Bin app/views/qor/assets/images/icon_trangle.svg | 0 app/views/qor/assets/images/logo-old.png | Bin app/views/qor/assets/images/logo.png | Bin app/views/qor/assets/javascripts/app.js | 0 app/views/qor/assets/javascripts/app/alert.js | 0 .../assets/javascripts/app/global-search.js | 0 app/views/qor/assets/javascripts/app/menu.js | 0 .../qor/assets/javascripts/app/mobile.js | 0 .../qor/assets/javascripts/app/open-url.js | 0 .../qor/assets/javascripts/app/search.js | 0 .../qor/assets/javascripts/datetimepicker.js | 0 .../qor/assets/javascripts/qor/datepicker.js | 0 .../qor/assets/javascripts/qor/qor-action.js | 0 .../javascripts/qor/qor-advanced-search.js | 0 .../assets/javascripts/qor/qor-autoheight.js | 0 .../javascripts/qor/qor-bottomsheets.js | 0 .../qor/assets/javascripts/qor/qor-common.js | 0 .../qor/assets/javascripts/qor/qor-config.js | 0 .../assets/javascripts/qor/qor-datepicker.js | 0 .../assets/javascripts/qor/qor-dirtyform.js | 0 .../assets/javascripts/qor/qor-filter-time.js | 0 .../qor/assets/javascripts/qor/qor-fixer.js | 0 .../assets/javascripts/qor/qor-inline-edit.js | 0 .../assets/javascripts/qor/qor-material.js | 0 .../qor/assets/javascripts/qor/qor-modal.js | 0 .../assets/javascripts/qor/qor-radio-tabs.js | 0 .../assets/javascripts/qor/qor-redactor.js | 0 .../qor/assets/javascripts/qor/qor-search.js | 0 .../assets/javascripts/qor/qor-select-core.js | 0 .../assets/javascripts/qor/qor-select-many.js | 0 .../assets/javascripts/qor/qor-select-one.js | 0 .../assets/javascripts/qor/qor-selector.js | 0 .../assets/javascripts/qor/qor-slideout.js | 0 .../qor/assets/javascripts/qor/qor-sorter.js | 0 .../qor/assets/javascripts/qor/qor-tabs.js | 0 .../assets/javascripts/qor/qor-timepicker.js | 0 .../assets/javascripts/vendors/cropper.min.js | 0 .../assets/javascripts/vendors/jquery.min.js | 0 .../vendors/jquery.timepicker.min.js | 0 .../javascripts/vendors/material.min.js | 0 .../assets/javascripts/vendors/moment.min.js | 0 .../javascripts/vendors/mustache.min.js | 0 .../vendors/redactor.source.min.js | 0 .../javascripts/vendors/underscore.min.js | 0 app/views/qor/assets/stylesheets/app.css | 0 .../qor/assets/stylesheets/chosen-sprite.png | Bin .../assets/stylesheets/chosen-sprite@2x.png | Bin .../qor/assets/stylesheets/datetimepicker.css | 0 app/views/qor/assets/stylesheets/fonts.css | 0 app/views/qor/assets/stylesheets/qor.css | 0 .../assets/stylesheets/qor_admin_default.css | 0 .../qor/assets/stylesheets/redactor-font.eot | Bin .../qor/assets/stylesheets/scss/app.scss | 0 .../assets/stylesheets/scss/app/_mobile.scss | 0 .../assets/stylesheets/scss/app/_print.scss | 0 .../stylesheets/scss/app/_qor-icons.scss | 0 .../stylesheets/scss/app/_search-center.scss | 0 .../stylesheets/scss/app/_sections.scss | 0 .../assets/stylesheets/scss/app/_select.scss | 0 .../assets/stylesheets/scss/app/_table.scss | 0 .../assets/stylesheets/scss/app/_tabs.scss | 0 .../stylesheets/scss/app/_typography.scss | 0 .../stylesheets/scss/datetimepicker.scss | 0 .../scss/mdl/_color-definitions.scss | 0 .../stylesheets/scss/mdl/_functions.scss | 0 .../assets/stylesheets/scss/mdl/_mixins.scss | 0 .../stylesheets/scss/mdl/_variables.scss | 0 .../qor/assets/stylesheets/scss/qor.scss | 0 .../stylesheets/scss/qor/datepicker.scss | 0 .../scss/qor/qor-bottomsheets.scss | 0 .../stylesheets/scss/qor/qor-filter.scss | 0 .../stylesheets/scss/qor/qor-fixer.scss | 0 .../stylesheets/scss/qor/qor-inlineedit.scss | 0 .../stylesheets/scss/qor/qor-search.scss | 0 .../stylesheets/scss/qor/qor-selector.scss | 0 .../assets/stylesheets/style-breeding-tb.css | 0 .../stylesheets/style-parentssiblings-tb.css | 0 app/views/qor/assets/stylesheets/vendors.css | 0 .../stylesheets/vendors/cropper.min.css | 0 .../stylesheets/vendors/material.min.css | 0 .../stylesheets/vendors/redactor.min.css | 0 .../stylesheets/vendors/select2.min.css | 0 .../breedingbook/assets/qor_admin_default.css | 0 .../breedingbook/assets/qor_admin_default.js | 0 app/views/qor/breedingbook/assets/vendors.js | 0 app/views/qor/breedingbook/index.html.tmpl | 0 app/views/qor/dashboard.tmpl | 0 app/views/qor/edit.tmpl | 0 app/views/qor/index.tmpl | 0 app/views/qor/index/pagination.tmpl | 0 app/views/qor/index/table.tmpl | 0 app/views/qor/layout.tmpl | 0 app/views/qor/mate_table_1/index.tmpl | 0 app/views/qor/mate_table_10/index.tmpl | 0 app/views/qor/mate_table_2/index.tmpl | 0 app/views/qor/mate_table_3/index.tmpl | 0 app/views/qor/mate_table_4/index.tmpl | 0 app/views/qor/mate_table_5/index.tmpl | 0 app/views/qor/mate_table_6/index.tmpl | 0 app/views/qor/mate_table_7/index.tmpl | 0 app/views/qor/mate_table_8/index.tmpl | 0 app/views/qor/mate_table_9/index.tmpl | 0 app/views/qor/metas/filter/checkbox.tmpl | 0 app/views/qor/metas/filter/datetime.tmpl | 0 app/views/qor/metas/filter/number.tmpl | 0 app/views/qor/metas/filter/select_many.tmpl | 0 app/views/qor/metas/filter/select_one.tmpl | 0 app/views/qor/metas/filter/string.tmpl | 0 app/views/qor/metas/form/checkbox.tmpl | 0 app/views/qor/metas/form/collection_edit.tmpl | 0 app/views/qor/metas/form/date.tmpl | 0 app/views/qor/metas/form/datetime.tmpl | 0 app/views/qor/metas/form/float.tmpl | 0 app/views/qor/metas/form/hidden.tmpl | 0 .../qor/metas/form/hidden_primary_key.tmpl | 0 app/views/qor/metas/form/number.tmpl | 0 app/views/qor/metas/form/password.tmpl | 0 app/views/qor/metas/form/readonly.tmpl | 0 app/views/qor/metas/form/rich_editor.tmpl | 0 app/views/qor/metas/form/select_many.tmpl | 0 app/views/qor/metas/form/select_one.tmpl | 0 app/views/qor/metas/form/single_edit.tmpl | 0 app/views/qor/metas/form/string.tmpl | 0 app/views/qor/metas/form/text.tmpl | 0 .../qor/metas/index/collection_edit.tmpl | 0 app/views/qor/metas/index/rich_editor.tmpl | 0 app/views/qor/metas/index/select_many.tmpl | 0 app/views/qor/metas/index/select_one.tmpl | 0 app/views/qor/metas/index/single_edit.tmpl | 0 app/views/qor/metas/section.tmpl | 0 app/views/qor/new.tmpl | 0 app/views/qor/parentssiblings/index.html.tmpl | 0 app/views/qor/search_center.tmpl | 0 app/views/qor/shared/action_item.tmpl | 0 app/views/qor/shared/errors.tmpl | 0 app/views/qor/shared/flashes.tmpl | 0 app/views/qor/shared/menu.tmpl | 0 app/views/qor/shared/sidebar.tmpl | 0 app/views/qor/show.tmpl | 0 app/views/qor/themes/grid/index/table.tmpl | 0 cmd/compile_templates/main.go | 0 config/bindatafs/templates_bindatafs.go | 0 go.mod | 0 go.sum | 0 main.go | 0 migrations/001_mv_breed_litter.sql | 0 mygorm/breedingbook.go | 27 +++-- mygorm/breedingbookfunc.go | 13 ++- mygorm/gorm.go | 1 + mygorm/gorm_test.go | 0 myqor/breedingbook.go | 95 ++++++++++++++++++ myqor/qor.go | 1 + .../asaskevich/govalidator/.gitignore | 0 .../asaskevich/govalidator/.travis.yml | 0 .../asaskevich/govalidator/CONTRIBUTING.md | 0 .../github.com/asaskevich/govalidator/LICENSE | 0 .../asaskevich/govalidator/README.md | 0 .../asaskevich/govalidator/arrays.go | 0 .../asaskevich/govalidator/converter.go | 0 .../github.com/asaskevich/govalidator/doc.go | 0 .../asaskevich/govalidator/error.go | 0 .../github.com/asaskevich/govalidator/go.mod | 0 .../asaskevich/govalidator/numerics.go | 0 .../asaskevich/govalidator/patterns.go | 0 .../asaskevich/govalidator/types.go | 0 .../asaskevich/govalidator/utils.go | 0 .../asaskevich/govalidator/validator.go | 0 .../asaskevich/govalidator/wercker.yml | 0 vendor/github.com/aymerick/douceur/LICENSE | 0 .../aymerick/douceur/css/declaration.go | 0 .../github.com/aymerick/douceur/css/rule.go | 0 .../aymerick/douceur/css/stylesheet.go | 0 .../aymerick/douceur/parser/parser.go | 0 .../containous/go-bindata/.gitignore | 0 .../containous/go-bindata/.travis.yml | 0 .../containous/go-bindata/CONTRIBUTING.md | 0 .../github.com/containous/go-bindata/LICENSE | 0 .../github.com/containous/go-bindata/Makefile | 0 .../containous/go-bindata/README.md | 0 .../github.com/containous/go-bindata/asset.go | 0 .../containous/go-bindata/bytewriter.go | 0 .../containous/go-bindata/config.go | 0 .../containous/go-bindata/convert.go | 0 .../github.com/containous/go-bindata/debug.go | 0 .../github.com/containous/go-bindata/doc.go | 0 .../containous/go-bindata/release.go | 0 .../containous/go-bindata/restore.go | 0 .../containous/go-bindata/stringwriter.go | 0 .../github.com/containous/go-bindata/toc.go | 0 vendor/github.com/davecgh/go-spew/LICENSE | 0 .../github.com/davecgh/go-spew/spew/bypass.go | 0 .../davecgh/go-spew/spew/bypasssafe.go | 0 .../github.com/davecgh/go-spew/spew/common.go | 0 .../github.com/davecgh/go-spew/spew/config.go | 0 vendor/github.com/davecgh/go-spew/spew/doc.go | 0 .../github.com/davecgh/go-spew/spew/dump.go | 0 .../github.com/davecgh/go-spew/spew/format.go | 0 .../github.com/davecgh/go-spew/spew/spew.go | 0 vendor/github.com/gorilla/context/.travis.yml | 0 vendor/github.com/gorilla/context/LICENSE | 0 vendor/github.com/gorilla/context/README.md | 0 vendor/github.com/gorilla/context/context.go | 0 vendor/github.com/gorilla/context/doc.go | 0 vendor/github.com/gorilla/css/LICENSE | 0 vendor/github.com/gorilla/css/scanner/doc.go | 0 .../github.com/gorilla/css/scanner/scanner.go | 0 .../gorilla/securecookie/.travis.yml | 0 .../github.com/gorilla/securecookie/LICENSE | 0 .../github.com/gorilla/securecookie/README.md | 0 vendor/github.com/gorilla/securecookie/doc.go | 0 .../github.com/gorilla/securecookie/fuzz.go | 0 .../gorilla/securecookie/securecookie.go | 0 vendor/github.com/gorilla/sessions/AUTHORS | 0 vendor/github.com/gorilla/sessions/LICENSE | 0 vendor/github.com/gorilla/sessions/README.md | 0 vendor/github.com/gorilla/sessions/cookie.go | 0 .../gorilla/sessions/cookie_go111.go | 0 vendor/github.com/gorilla/sessions/doc.go | 0 vendor/github.com/gorilla/sessions/go.mod | 0 vendor/github.com/gorilla/sessions/go.sum | 0 vendor/github.com/gorilla/sessions/lex.go | 0 vendor/github.com/gorilla/sessions/options.go | 0 .../gorilla/sessions/options_go111.go | 0 .../github.com/gorilla/sessions/sessions.go | 0 vendor/github.com/gorilla/sessions/store.go | 0 vendor/github.com/gosimple/slug/.gitignore | 0 vendor/github.com/gosimple/slug/.travis.yml | 0 vendor/github.com/gosimple/slug/LICENSE | 0 vendor/github.com/gosimple/slug/README.md | 0 vendor/github.com/gosimple/slug/doc.go | 0 vendor/github.com/gosimple/slug/go.mod | 0 vendor/github.com/gosimple/slug/go.sum | 0 .../gosimple/slug/languages_substitution.go | 0 vendor/github.com/gosimple/slug/slug.go | 0 vendor/github.com/jinzhu/gorm/.gitignore | 0 vendor/github.com/jinzhu/gorm/License | 0 vendor/github.com/jinzhu/gorm/README.md | 0 vendor/github.com/jinzhu/gorm/association.go | 0 vendor/github.com/jinzhu/gorm/callback.go | 0 .../github.com/jinzhu/gorm/callback_create.go | 0 .../github.com/jinzhu/gorm/callback_delete.go | 0 .../github.com/jinzhu/gorm/callback_query.go | 0 .../jinzhu/gorm/callback_query_preload.go | 0 .../jinzhu/gorm/callback_row_query.go | 0 .../github.com/jinzhu/gorm/callback_save.go | 0 .../github.com/jinzhu/gorm/callback_update.go | 0 vendor/github.com/jinzhu/gorm/dialect.go | 0 .../github.com/jinzhu/gorm/dialect_common.go | 0 .../github.com/jinzhu/gorm/dialect_mysql.go | 0 .../jinzhu/gorm/dialect_postgres.go | 0 .../github.com/jinzhu/gorm/dialect_sqlite3.go | 0 .../github.com/jinzhu/gorm/docker-compose.yml | 0 vendor/github.com/jinzhu/gorm/errors.go | 0 vendor/github.com/jinzhu/gorm/field.go | 0 vendor/github.com/jinzhu/gorm/go.mod | 0 vendor/github.com/jinzhu/gorm/go.sum | 0 vendor/github.com/jinzhu/gorm/interface.go | 0 .../jinzhu/gorm/join_table_handler.go | 0 vendor/github.com/jinzhu/gorm/logger.go | 0 vendor/github.com/jinzhu/gorm/main.go | 0 vendor/github.com/jinzhu/gorm/model.go | 0 vendor/github.com/jinzhu/gorm/model_struct.go | 0 vendor/github.com/jinzhu/gorm/naming.go | 0 vendor/github.com/jinzhu/gorm/scope.go | 0 vendor/github.com/jinzhu/gorm/search.go | 0 vendor/github.com/jinzhu/gorm/test_all.sh | 0 vendor/github.com/jinzhu/gorm/utils.go | 0 vendor/github.com/jinzhu/gorm/wercker.yml | 0 vendor/github.com/jinzhu/inflection/LICENSE | 0 vendor/github.com/jinzhu/inflection/README.md | 0 vendor/github.com/jinzhu/inflection/go.mod | 0 .../jinzhu/inflection/inflections.go | 0 .../github.com/jinzhu/inflection/wercker.yml | 0 vendor/github.com/jinzhu/now/Guardfile | 0 vendor/github.com/jinzhu/now/License | 0 vendor/github.com/jinzhu/now/README.md | 0 vendor/github.com/jinzhu/now/go.mod | 0 vendor/github.com/jinzhu/now/main.go | 0 vendor/github.com/jinzhu/now/now.go | 0 vendor/github.com/jinzhu/now/wercker.yml | 0 vendor/github.com/mattn/go-sqlite3/.gitignore | 0 .../github.com/mattn/go-sqlite3/.travis.yml | 0 vendor/github.com/mattn/go-sqlite3/LICENSE | 0 vendor/github.com/mattn/go-sqlite3/README.md | 0 vendor/github.com/mattn/go-sqlite3/backup.go | 0 .../github.com/mattn/go-sqlite3/callback.go | 0 vendor/github.com/mattn/go-sqlite3/convert.go | 0 vendor/github.com/mattn/go-sqlite3/doc.go | 0 vendor/github.com/mattn/go-sqlite3/error.go | 0 vendor/github.com/mattn/go-sqlite3/go.mod | 0 vendor/github.com/mattn/go-sqlite3/go.sum | 0 .../mattn/go-sqlite3/sqlite3-binding.c | 0 .../mattn/go-sqlite3/sqlite3-binding.h | 0 vendor/github.com/mattn/go-sqlite3/sqlite3.go | 0 .../mattn/go-sqlite3/sqlite3_context.go | 0 .../mattn/go-sqlite3/sqlite3_func_crypt.go | 0 .../mattn/go-sqlite3/sqlite3_go18.go | 0 .../mattn/go-sqlite3/sqlite3_libsqlite3.go | 0 .../go-sqlite3/sqlite3_load_extension.go | 0 .../go-sqlite3/sqlite3_load_extension_omit.go | 0 .../sqlite3_opt_allow_uri_authority.go | 0 .../mattn/go-sqlite3/sqlite3_opt_app_armor.go | 0 .../go-sqlite3/sqlite3_opt_foreign_keys.go | 0 .../mattn/go-sqlite3/sqlite3_opt_fts5.go | 0 .../mattn/go-sqlite3/sqlite3_opt_icu.go | 0 .../go-sqlite3/sqlite3_opt_introspect.go | 0 .../mattn/go-sqlite3/sqlite3_opt_json1.go | 0 .../mattn/go-sqlite3/sqlite3_opt_preupdate.go | 0 .../go-sqlite3/sqlite3_opt_preupdate_hook.go | 0 .../go-sqlite3/sqlite3_opt_preupdate_omit.go | 0 .../go-sqlite3/sqlite3_opt_secure_delete.go | 0 .../sqlite3_opt_secure_delete_fast.go | 0 .../mattn/go-sqlite3/sqlite3_opt_stat4.go | 0 .../go-sqlite3/sqlite3_opt_unlock_notify.c | 0 .../go-sqlite3/sqlite3_opt_unlock_notify.go | 0 .../mattn/go-sqlite3/sqlite3_opt_userauth.go | 0 .../go-sqlite3/sqlite3_opt_userauth_omit.go | 0 .../go-sqlite3/sqlite3_opt_vacuum_full.go | 0 .../go-sqlite3/sqlite3_opt_vacuum_incr.go | 0 .../mattn/go-sqlite3/sqlite3_opt_vtable.go | 0 .../mattn/go-sqlite3/sqlite3_other.go | 0 .../mattn/go-sqlite3/sqlite3_solaris.go | 0 .../mattn/go-sqlite3/sqlite3_trace.go | 0 .../mattn/go-sqlite3/sqlite3_type.go | 0 .../go-sqlite3/sqlite3_usleep_windows.go | 0 .../mattn/go-sqlite3/sqlite3_windows.go | 0 .../github.com/mattn/go-sqlite3/sqlite3ext.h | 0 .../mattn/go-sqlite3/static_mock.go | 0 .../microcosm-cc/bluemonday/.coveralls.yml | 0 .../microcosm-cc/bluemonday/.editorconfig | 0 .../microcosm-cc/bluemonday/.gitattributes | 0 .../microcosm-cc/bluemonday/.gitignore | 0 .../microcosm-cc/bluemonday/.travis.yml | 0 .../microcosm-cc/bluemonday/CONTRIBUTING.md | 0 .../microcosm-cc/bluemonday/CREDITS.md | 0 .../microcosm-cc/bluemonday/LICENSE.md | 0 .../microcosm-cc/bluemonday/Makefile | 0 .../microcosm-cc/bluemonday/README.md | 0 .../microcosm-cc/bluemonday/SECURITY.md | 0 .../microcosm-cc/bluemonday/css/handlers.go | 0 .../github.com/microcosm-cc/bluemonday/doc.go | 0 .../github.com/microcosm-cc/bluemonday/go.mod | 0 .../github.com/microcosm-cc/bluemonday/go.sum | 0 .../microcosm-cc/bluemonday/helpers.go | 0 .../microcosm-cc/bluemonday/policies.go | 0 .../microcosm-cc/bluemonday/policy.go | 0 .../microcosm-cc/bluemonday/sanitize.go | 0 .../bluemonday/stringwriterwriter_go1.12.go | 0 .../bluemonday/stringwriterwriter_ltgo1.12.go | 0 vendor/github.com/qor/admin/.babelrc | 0 vendor/github.com/qor/admin/.eslintignore | 0 vendor/github.com/qor/admin/.eslintrc | 0 vendor/github.com/qor/admin/.eslintrc.json | 0 vendor/github.com/qor/admin/.gitignore | 0 vendor/github.com/qor/admin/.travis.yml | 0 vendor/github.com/qor/admin/README.md | 0 vendor/github.com/qor/admin/action.go | 0 vendor/github.com/qor/admin/admin.go | 0 vendor/github.com/qor/admin/auth.go | 0 .../admin/composite_primary_key_callback.go | 0 vendor/github.com/qor/admin/context.go | 0 vendor/github.com/qor/admin/controller.go | 0 vendor/github.com/qor/admin/filter.go | 0 vendor/github.com/qor/admin/func_map.go | 0 vendor/github.com/qor/admin/go.mod | 0 vendor/github.com/qor/admin/go.sum | 0 vendor/github.com/qor/admin/menu.go | 0 vendor/github.com/qor/admin/meta.go | 0 .../qor/admin/meta_collection_edit.go | 0 vendor/github.com/qor/admin/meta_configors.go | 0 vendor/github.com/qor/admin/meta_datetime.go | 0 .../github.com/qor/admin/meta_rich_editor.go | 0 .../github.com/qor/admin/meta_select_many.go | 0 .../github.com/qor/admin/meta_select_one.go | 0 .../github.com/qor/admin/meta_single_edit.go | 0 vendor/github.com/qor/admin/package.json | 0 vendor/github.com/qor/admin/resource.go | 0 vendor/github.com/qor/admin/route.go | 0 vendor/github.com/qor/admin/route_handler.go | 0 vendor/github.com/qor/admin/scope.go | 0 vendor/github.com/qor/admin/searcher.go | 0 vendor/github.com/qor/admin/section.go | 0 vendor/github.com/qor/admin/settings.go | 0 vendor/github.com/qor/admin/theme.go | 0 vendor/github.com/qor/admin/transformer.go | 0 .../github.com/qor/admin/transformer_json.go | 0 .../github.com/qor/admin/transformer_xml.go | 0 vendor/github.com/qor/admin/utils.go | 0 vendor/github.com/qor/admin/yarn.lock | 0 vendor/github.com/qor/assetfs/LICENSE.txt | 0 vendor/github.com/qor/assetfs/README.md | 0 vendor/github.com/qor/assetfs/assetfs.go | 0 vendor/github.com/qor/assetfs/filesystem.go | 0 vendor/github.com/qor/middlewares/LICENSE.txt | 0 vendor/github.com/qor/middlewares/README.md | 0 vendor/github.com/qor/middlewares/default.go | 0 .../github.com/qor/middlewares/middleware.go | 0 .../github.com/qor/middlewares/middlewares.go | 0 vendor/github.com/qor/middlewares/utils.go | 0 vendor/github.com/qor/qor/.babelrc | 0 vendor/github.com/qor/qor/.codeclimate.yml | 0 vendor/github.com/qor/qor/.csscomb.json | 0 vendor/github.com/qor/qor/.csslintrc | 0 vendor/github.com/qor/qor/.editorconfig | 0 vendor/github.com/qor/qor/.eslintignore | 0 vendor/github.com/qor/qor/.eslintrc | 0 vendor/github.com/qor/qor/.gitattributes | 0 vendor/github.com/qor/qor/.gitignore | 0 vendor/github.com/qor/qor/.jscsrc | 0 vendor/github.com/qor/qor/.jshintrc | 0 vendor/github.com/qor/qor/.travis.yml | 0 vendor/github.com/qor/qor/LICENSE.txt | 0 vendor/github.com/qor/qor/README.md | 0 vendor/github.com/qor/qor/bower.json | 0 vendor/github.com/qor/qor/config.go | 0 vendor/github.com/qor/qor/context.go | 0 vendor/github.com/qor/qor/errors.go | 0 vendor/github.com/qor/qor/go.mod | 0 vendor/github.com/qor/qor/go.sum | 0 vendor/github.com/qor/qor/gulpfile.js | 0 vendor/github.com/qor/qor/package.json | 0 vendor/github.com/qor/qor/resource/crud.go | 0 vendor/github.com/qor/qor/resource/meta.go | 0 .../github.com/qor/qor/resource/meta_value.go | 0 .../github.com/qor/qor/resource/processor.go | 0 .../github.com/qor/qor/resource/resource.go | 0 vendor/github.com/qor/qor/resource/schema.go | 0 vendor/github.com/qor/qor/test_all.sh | 0 .../qor/qor/update_all_qor_repos.sh | 0 vendor/github.com/qor/qor/utils/buffer.go | 0 vendor/github.com/qor/qor/utils/meta.go | 0 vendor/github.com/qor/qor/utils/params.go | 0 vendor/github.com/qor/qor/utils/utils.go | 0 vendor/github.com/qor/qor/yarn.lock | 0 vendor/github.com/qor/responder/LICENSE.txt | 0 vendor/github.com/qor/responder/README.md | 0 vendor/github.com/qor/responder/responder.go | 0 vendor/github.com/qor/roles/LICENSE.txt | 0 vendor/github.com/qor/roles/README.md | 0 vendor/github.com/qor/roles/global.go | 0 vendor/github.com/qor/roles/permission.go | 0 vendor/github.com/qor/roles/permissioner.go | 0 vendor/github.com/qor/roles/role.go | 0 vendor/github.com/qor/roles/role_manager.go | 0 vendor/github.com/qor/session/LICENSE.txt | 0 vendor/github.com/qor/session/README.md | 0 .../github.com/qor/session/gorilla/gorilla.go | 0 .../github.com/qor/session/manager/manager.go | 0 .../github.com/qor/session/session_manager.go | 0 vendor/github.com/qor/validations/LICENSE.txt | 0 vendor/github.com/qor/validations/README.md | 0 .../github.com/qor/validations/callbacks.go | 0 .../github.com/qor/validations/validations.go | 0 .../github.com/rainycape/unidecode/.gitignore | 0 vendor/github.com/rainycape/unidecode/LICENSE | 0 .../github.com/rainycape/unidecode/README.md | 0 .../github.com/rainycape/unidecode/decode.go | 0 .../rainycape/unidecode/make_table.go | 0 .../github.com/rainycape/unidecode/table.go | 0 .../github.com/rainycape/unidecode/table.txt | 0 .../rainycape/unidecode/unidecode.go | 0 vendor/github.com/theplant/cldr/.gitignore | 0 vendor/github.com/theplant/cldr/LICENSE | 0 vendor/github.com/theplant/cldr/README.md | 0 vendor/github.com/theplant/cldr/calendar.go | 0 vendor/github.com/theplant/cldr/copy.go | 0 vendor/github.com/theplant/cldr/helper.go | 0 vendor/github.com/theplant/cldr/locale.go | 0 vendor/github.com/theplant/cldr/number.go | 0 vendor/github.com/theplant/cldr/parse.go | 0 vendor/github.com/theplant/cldr/plurals.go | 0 vendor/golang.org/x/net/AUTHORS | 0 vendor/golang.org/x/net/CONTRIBUTORS | 0 vendor/golang.org/x/net/LICENSE | 0 vendor/golang.org/x/net/PATENTS | 0 vendor/golang.org/x/net/html/atom/atom.go | 0 vendor/golang.org/x/net/html/atom/table.go | 0 vendor/golang.org/x/net/html/const.go | 0 vendor/golang.org/x/net/html/doc.go | 0 vendor/golang.org/x/net/html/doctype.go | 0 vendor/golang.org/x/net/html/entity.go | 0 vendor/golang.org/x/net/html/escape.go | 0 vendor/golang.org/x/net/html/foreign.go | 0 vendor/golang.org/x/net/html/node.go | 0 vendor/golang.org/x/net/html/parse.go | 0 vendor/golang.org/x/net/html/render.go | 0 vendor/golang.org/x/net/html/token.go | 0 vendor/modules.txt | 0 525 files changed, 121 insertions(+), 16 deletions(-) mode change 100644 => 100755 .gitignore create mode 100755 DogBreedingBackup.db mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 TODO.md mode change 100644 => 100755 app/views/qor/action.tmpl mode change 100644 => 100755 app/views/qor/actions/9.action.tmpl mode change 100644 => 100755 app/views/qor/actions/header/1.page_title.tmpl mode change 100644 => 100755 app/views/qor/actions/header/5.userinfo.tmpl mode change 100644 => 100755 app/views/qor/actions/header/6.searchbar.tmpl mode change 100644 => 100755 app/views/qor/actions/index/5.scope.tmpl mode change 100644 => 100755 app/views/qor/actions/index/9.action.tmpl mode change 100644 => 100755 app/views/qor/actions/index/9.advanced_filter.tmpl mode change 100644 => 100755 app/views/qor/ancestors/assets/qor_admin_default.css mode change 100644 => 100755 app/views/qor/ancestors/assets/qor_admin_default.js mode change 100644 => 100755 app/views/qor/ancestors/assets/vendors.js mode change 100644 => 100755 app/views/qor/ancestors/index.html.tmpl mode change 100644 => 100755 app/views/qor/assets/fonts/MaterialIcons.woff mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Black.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-BlackItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Bold.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-BoldItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Italic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Light.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-LightItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Medium.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-MediumItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Regular.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-Thin.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/Roboto-ThinItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-Bold.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-BoldItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-Italic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-Light.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-LightItalic.ttf mode change 100644 => 100755 app/views/qor/assets/fonts/RobotoCondensed-Regular.ttf mode change 100644 => 100755 app/views/qor/assets/images/bg-transparents.png mode change 100644 => 100755 app/views/qor/assets/images/icon_trangle.svg mode change 100644 => 100755 app/views/qor/assets/images/logo-old.png mode change 100644 => 100755 app/views/qor/assets/images/logo.png mode change 100644 => 100755 app/views/qor/assets/javascripts/app.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/alert.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/global-search.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/menu.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/mobile.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/open-url.js mode change 100644 => 100755 app/views/qor/assets/javascripts/app/search.js mode change 100644 => 100755 app/views/qor/assets/javascripts/datetimepicker.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/datepicker.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-action.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-advanced-search.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-autoheight.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-bottomsheets.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-common.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-config.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-datepicker.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-dirtyform.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-filter-time.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-fixer.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-inline-edit.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-material.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-modal.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-radio-tabs.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-redactor.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-search.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-select-core.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-select-many.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-select-one.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-selector.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-slideout.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-sorter.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-tabs.js mode change 100644 => 100755 app/views/qor/assets/javascripts/qor/qor-timepicker.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/cropper.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/jquery.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/jquery.timepicker.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/material.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/moment.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/mustache.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/redactor.source.min.js mode change 100644 => 100755 app/views/qor/assets/javascripts/vendors/underscore.min.js mode change 100644 => 100755 app/views/qor/assets/stylesheets/app.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/chosen-sprite.png mode change 100644 => 100755 app/views/qor/assets/stylesheets/chosen-sprite@2x.png mode change 100644 => 100755 app/views/qor/assets/stylesheets/datetimepicker.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/fonts.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/qor.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/qor_admin_default.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/redactor-font.eot mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_mobile.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_print.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_qor-icons.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_search-center.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_sections.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_select.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_table.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_tabs.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/app/_typography.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/datetimepicker.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/mdl/_color-definitions.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/mdl/_functions.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/mdl/_mixins.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/mdl/_variables.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/datepicker.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-bottomsheets.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-filter.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-fixer.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-inlineedit.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-search.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/scss/qor/qor-selector.scss mode change 100644 => 100755 app/views/qor/assets/stylesheets/style-breeding-tb.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/style-parentssiblings-tb.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/vendors.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/vendors/cropper.min.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/vendors/material.min.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/vendors/redactor.min.css mode change 100644 => 100755 app/views/qor/assets/stylesheets/vendors/select2.min.css mode change 100644 => 100755 app/views/qor/breedingbook/assets/qor_admin_default.css mode change 100644 => 100755 app/views/qor/breedingbook/assets/qor_admin_default.js mode change 100644 => 100755 app/views/qor/breedingbook/assets/vendors.js mode change 100644 => 100755 app/views/qor/breedingbook/index.html.tmpl mode change 100644 => 100755 app/views/qor/dashboard.tmpl mode change 100644 => 100755 app/views/qor/edit.tmpl mode change 100644 => 100755 app/views/qor/index.tmpl mode change 100644 => 100755 app/views/qor/index/pagination.tmpl mode change 100644 => 100755 app/views/qor/index/table.tmpl mode change 100644 => 100755 app/views/qor/layout.tmpl mode change 100644 => 100755 app/views/qor/mate_table_1/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_10/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_2/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_3/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_4/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_5/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_6/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_7/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_8/index.tmpl mode change 100644 => 100755 app/views/qor/mate_table_9/index.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/checkbox.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/datetime.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/number.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/select_many.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/select_one.tmpl mode change 100644 => 100755 app/views/qor/metas/filter/string.tmpl mode change 100644 => 100755 app/views/qor/metas/form/checkbox.tmpl mode change 100644 => 100755 app/views/qor/metas/form/collection_edit.tmpl mode change 100644 => 100755 app/views/qor/metas/form/date.tmpl mode change 100644 => 100755 app/views/qor/metas/form/datetime.tmpl mode change 100644 => 100755 app/views/qor/metas/form/float.tmpl mode change 100644 => 100755 app/views/qor/metas/form/hidden.tmpl mode change 100644 => 100755 app/views/qor/metas/form/hidden_primary_key.tmpl mode change 100644 => 100755 app/views/qor/metas/form/number.tmpl mode change 100644 => 100755 app/views/qor/metas/form/password.tmpl mode change 100644 => 100755 app/views/qor/metas/form/readonly.tmpl mode change 100644 => 100755 app/views/qor/metas/form/rich_editor.tmpl mode change 100644 => 100755 app/views/qor/metas/form/select_many.tmpl mode change 100644 => 100755 app/views/qor/metas/form/select_one.tmpl mode change 100644 => 100755 app/views/qor/metas/form/single_edit.tmpl mode change 100644 => 100755 app/views/qor/metas/form/string.tmpl mode change 100644 => 100755 app/views/qor/metas/form/text.tmpl mode change 100644 => 100755 app/views/qor/metas/index/collection_edit.tmpl mode change 100644 => 100755 app/views/qor/metas/index/rich_editor.tmpl mode change 100644 => 100755 app/views/qor/metas/index/select_many.tmpl mode change 100644 => 100755 app/views/qor/metas/index/select_one.tmpl mode change 100644 => 100755 app/views/qor/metas/index/single_edit.tmpl mode change 100644 => 100755 app/views/qor/metas/section.tmpl mode change 100644 => 100755 app/views/qor/new.tmpl mode change 100644 => 100755 app/views/qor/parentssiblings/index.html.tmpl mode change 100644 => 100755 app/views/qor/search_center.tmpl mode change 100644 => 100755 app/views/qor/shared/action_item.tmpl mode change 100644 => 100755 app/views/qor/shared/errors.tmpl mode change 100644 => 100755 app/views/qor/shared/flashes.tmpl mode change 100644 => 100755 app/views/qor/shared/menu.tmpl mode change 100644 => 100755 app/views/qor/shared/sidebar.tmpl mode change 100644 => 100755 app/views/qor/show.tmpl mode change 100644 => 100755 app/views/qor/themes/grid/index/table.tmpl mode change 100644 => 100755 cmd/compile_templates/main.go mode change 100644 => 100755 config/bindatafs/templates_bindatafs.go mode change 100644 => 100755 go.mod mode change 100644 => 100755 go.sum mode change 100644 => 100755 main.go mode change 100644 => 100755 migrations/001_mv_breed_litter.sql mode change 100644 => 100755 mygorm/breedingbook.go mode change 100644 => 100755 mygorm/breedingbookfunc.go mode change 100644 => 100755 mygorm/gorm.go mode change 100644 => 100755 mygorm/gorm_test.go create mode 100755 myqor/breedingbook.go mode change 100644 => 100755 myqor/qor.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/.gitignore mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/.travis.yml mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/LICENSE mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/README.md mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/arrays.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/converter.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/doc.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/error.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/go.mod mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/numerics.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/patterns.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/types.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/utils.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/validator.go mode change 100644 => 100755 vendor/github.com/asaskevich/govalidator/wercker.yml mode change 100644 => 100755 vendor/github.com/aymerick/douceur/LICENSE mode change 100644 => 100755 vendor/github.com/aymerick/douceur/css/declaration.go mode change 100644 => 100755 vendor/github.com/aymerick/douceur/css/rule.go mode change 100644 => 100755 vendor/github.com/aymerick/douceur/css/stylesheet.go mode change 100644 => 100755 vendor/github.com/aymerick/douceur/parser/parser.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/.gitignore mode change 100644 => 100755 vendor/github.com/containous/go-bindata/.travis.yml mode change 100644 => 100755 vendor/github.com/containous/go-bindata/CONTRIBUTING.md mode change 100644 => 100755 vendor/github.com/containous/go-bindata/LICENSE mode change 100644 => 100755 vendor/github.com/containous/go-bindata/Makefile mode change 100644 => 100755 vendor/github.com/containous/go-bindata/README.md mode change 100644 => 100755 vendor/github.com/containous/go-bindata/asset.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/bytewriter.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/config.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/convert.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/debug.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/doc.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/release.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/restore.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/stringwriter.go mode change 100644 => 100755 vendor/github.com/containous/go-bindata/toc.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/LICENSE mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/bypass.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/bypasssafe.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/common.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/config.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/doc.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/dump.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/format.go mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/spew.go mode change 100644 => 100755 vendor/github.com/gorilla/context/.travis.yml mode change 100644 => 100755 vendor/github.com/gorilla/context/LICENSE mode change 100644 => 100755 vendor/github.com/gorilla/context/README.md mode change 100644 => 100755 vendor/github.com/gorilla/context/context.go mode change 100644 => 100755 vendor/github.com/gorilla/context/doc.go mode change 100644 => 100755 vendor/github.com/gorilla/css/LICENSE mode change 100644 => 100755 vendor/github.com/gorilla/css/scanner/doc.go mode change 100644 => 100755 vendor/github.com/gorilla/css/scanner/scanner.go mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/.travis.yml mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/LICENSE mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/README.md mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/doc.go mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/fuzz.go mode change 100644 => 100755 vendor/github.com/gorilla/securecookie/securecookie.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/AUTHORS mode change 100644 => 100755 vendor/github.com/gorilla/sessions/LICENSE mode change 100644 => 100755 vendor/github.com/gorilla/sessions/README.md mode change 100644 => 100755 vendor/github.com/gorilla/sessions/cookie.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/cookie_go111.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/doc.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/go.mod mode change 100644 => 100755 vendor/github.com/gorilla/sessions/go.sum mode change 100644 => 100755 vendor/github.com/gorilla/sessions/lex.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/options.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/options_go111.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/sessions.go mode change 100644 => 100755 vendor/github.com/gorilla/sessions/store.go mode change 100644 => 100755 vendor/github.com/gosimple/slug/.gitignore mode change 100644 => 100755 vendor/github.com/gosimple/slug/.travis.yml mode change 100644 => 100755 vendor/github.com/gosimple/slug/LICENSE mode change 100644 => 100755 vendor/github.com/gosimple/slug/README.md mode change 100644 => 100755 vendor/github.com/gosimple/slug/doc.go mode change 100644 => 100755 vendor/github.com/gosimple/slug/go.mod mode change 100644 => 100755 vendor/github.com/gosimple/slug/go.sum mode change 100644 => 100755 vendor/github.com/gosimple/slug/languages_substitution.go mode change 100644 => 100755 vendor/github.com/gosimple/slug/slug.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/.gitignore mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/License mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/README.md mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/association.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_create.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_delete.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_query.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_query_preload.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_row_query.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_save.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/callback_update.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/dialect.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/dialect_common.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/dialect_mysql.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/dialect_postgres.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/dialect_sqlite3.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/docker-compose.yml mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/errors.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/field.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/go.mod mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/go.sum mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/interface.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/join_table_handler.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/logger.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/main.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/model.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/model_struct.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/naming.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/scope.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/search.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/test_all.sh mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/utils.go mode change 100644 => 100755 vendor/github.com/jinzhu/gorm/wercker.yml mode change 100644 => 100755 vendor/github.com/jinzhu/inflection/LICENSE mode change 100644 => 100755 vendor/github.com/jinzhu/inflection/README.md mode change 100644 => 100755 vendor/github.com/jinzhu/inflection/go.mod mode change 100644 => 100755 vendor/github.com/jinzhu/inflection/inflections.go mode change 100644 => 100755 vendor/github.com/jinzhu/inflection/wercker.yml mode change 100644 => 100755 vendor/github.com/jinzhu/now/Guardfile mode change 100644 => 100755 vendor/github.com/jinzhu/now/License mode change 100644 => 100755 vendor/github.com/jinzhu/now/README.md mode change 100644 => 100755 vendor/github.com/jinzhu/now/go.mod mode change 100644 => 100755 vendor/github.com/jinzhu/now/main.go mode change 100644 => 100755 vendor/github.com/jinzhu/now/now.go mode change 100644 => 100755 vendor/github.com/jinzhu/now/wercker.yml mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/.gitignore mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/.travis.yml mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/LICENSE mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/README.md mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/backup.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/callback.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/convert.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/doc.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/error.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/go.mod mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/go.sum mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_context.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_json1.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_other.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_type.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/sqlite3ext.h mode change 100644 => 100755 vendor/github.com/mattn/go-sqlite3/static_mock.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/.editorconfig mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/.gitattributes mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/.gitignore mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/.travis.yml mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/CREDITS.md mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/LICENSE.md mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/Makefile mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/README.md mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/SECURITY.md mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/css/handlers.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/doc.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/go.mod mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/go.sum mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/helpers.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/policies.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/policy.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/sanitize.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_go1.12.go mode change 100644 => 100755 vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_ltgo1.12.go mode change 100644 => 100755 vendor/github.com/qor/admin/.babelrc mode change 100644 => 100755 vendor/github.com/qor/admin/.eslintignore mode change 100644 => 100755 vendor/github.com/qor/admin/.eslintrc mode change 100644 => 100755 vendor/github.com/qor/admin/.eslintrc.json mode change 100644 => 100755 vendor/github.com/qor/admin/.gitignore mode change 100644 => 100755 vendor/github.com/qor/admin/.travis.yml mode change 100644 => 100755 vendor/github.com/qor/admin/README.md mode change 100644 => 100755 vendor/github.com/qor/admin/action.go mode change 100644 => 100755 vendor/github.com/qor/admin/admin.go mode change 100644 => 100755 vendor/github.com/qor/admin/auth.go mode change 100644 => 100755 vendor/github.com/qor/admin/composite_primary_key_callback.go mode change 100644 => 100755 vendor/github.com/qor/admin/context.go mode change 100644 => 100755 vendor/github.com/qor/admin/controller.go mode change 100644 => 100755 vendor/github.com/qor/admin/filter.go mode change 100644 => 100755 vendor/github.com/qor/admin/func_map.go mode change 100644 => 100755 vendor/github.com/qor/admin/go.mod mode change 100644 => 100755 vendor/github.com/qor/admin/go.sum mode change 100644 => 100755 vendor/github.com/qor/admin/menu.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_collection_edit.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_configors.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_datetime.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_rich_editor.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_select_many.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_select_one.go mode change 100644 => 100755 vendor/github.com/qor/admin/meta_single_edit.go mode change 100644 => 100755 vendor/github.com/qor/admin/package.json mode change 100644 => 100755 vendor/github.com/qor/admin/resource.go mode change 100644 => 100755 vendor/github.com/qor/admin/route.go mode change 100644 => 100755 vendor/github.com/qor/admin/route_handler.go mode change 100644 => 100755 vendor/github.com/qor/admin/scope.go mode change 100644 => 100755 vendor/github.com/qor/admin/searcher.go mode change 100644 => 100755 vendor/github.com/qor/admin/section.go mode change 100644 => 100755 vendor/github.com/qor/admin/settings.go mode change 100644 => 100755 vendor/github.com/qor/admin/theme.go mode change 100644 => 100755 vendor/github.com/qor/admin/transformer.go mode change 100644 => 100755 vendor/github.com/qor/admin/transformer_json.go mode change 100644 => 100755 vendor/github.com/qor/admin/transformer_xml.go mode change 100644 => 100755 vendor/github.com/qor/admin/utils.go mode change 100644 => 100755 vendor/github.com/qor/admin/yarn.lock mode change 100644 => 100755 vendor/github.com/qor/assetfs/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/assetfs/README.md mode change 100644 => 100755 vendor/github.com/qor/assetfs/assetfs.go mode change 100644 => 100755 vendor/github.com/qor/assetfs/filesystem.go mode change 100644 => 100755 vendor/github.com/qor/middlewares/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/middlewares/README.md mode change 100644 => 100755 vendor/github.com/qor/middlewares/default.go mode change 100644 => 100755 vendor/github.com/qor/middlewares/middleware.go mode change 100644 => 100755 vendor/github.com/qor/middlewares/middlewares.go mode change 100644 => 100755 vendor/github.com/qor/middlewares/utils.go mode change 100644 => 100755 vendor/github.com/qor/qor/.babelrc mode change 100644 => 100755 vendor/github.com/qor/qor/.codeclimate.yml mode change 100644 => 100755 vendor/github.com/qor/qor/.csscomb.json mode change 100644 => 100755 vendor/github.com/qor/qor/.csslintrc mode change 100644 => 100755 vendor/github.com/qor/qor/.editorconfig mode change 100644 => 100755 vendor/github.com/qor/qor/.eslintignore mode change 100644 => 100755 vendor/github.com/qor/qor/.eslintrc mode change 100644 => 100755 vendor/github.com/qor/qor/.gitattributes mode change 100644 => 100755 vendor/github.com/qor/qor/.gitignore mode change 100644 => 100755 vendor/github.com/qor/qor/.jscsrc mode change 100644 => 100755 vendor/github.com/qor/qor/.jshintrc mode change 100644 => 100755 vendor/github.com/qor/qor/.travis.yml mode change 100644 => 100755 vendor/github.com/qor/qor/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/qor/README.md mode change 100644 => 100755 vendor/github.com/qor/qor/bower.json mode change 100644 => 100755 vendor/github.com/qor/qor/config.go mode change 100644 => 100755 vendor/github.com/qor/qor/context.go mode change 100644 => 100755 vendor/github.com/qor/qor/errors.go mode change 100644 => 100755 vendor/github.com/qor/qor/go.mod mode change 100644 => 100755 vendor/github.com/qor/qor/go.sum mode change 100644 => 100755 vendor/github.com/qor/qor/gulpfile.js mode change 100644 => 100755 vendor/github.com/qor/qor/package.json mode change 100644 => 100755 vendor/github.com/qor/qor/resource/crud.go mode change 100644 => 100755 vendor/github.com/qor/qor/resource/meta.go mode change 100644 => 100755 vendor/github.com/qor/qor/resource/meta_value.go mode change 100644 => 100755 vendor/github.com/qor/qor/resource/processor.go mode change 100644 => 100755 vendor/github.com/qor/qor/resource/resource.go mode change 100644 => 100755 vendor/github.com/qor/qor/resource/schema.go mode change 100644 => 100755 vendor/github.com/qor/qor/test_all.sh mode change 100644 => 100755 vendor/github.com/qor/qor/update_all_qor_repos.sh mode change 100644 => 100755 vendor/github.com/qor/qor/utils/buffer.go mode change 100644 => 100755 vendor/github.com/qor/qor/utils/meta.go mode change 100644 => 100755 vendor/github.com/qor/qor/utils/params.go mode change 100644 => 100755 vendor/github.com/qor/qor/utils/utils.go mode change 100644 => 100755 vendor/github.com/qor/qor/yarn.lock mode change 100644 => 100755 vendor/github.com/qor/responder/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/responder/README.md mode change 100644 => 100755 vendor/github.com/qor/responder/responder.go mode change 100644 => 100755 vendor/github.com/qor/roles/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/roles/README.md mode change 100644 => 100755 vendor/github.com/qor/roles/global.go mode change 100644 => 100755 vendor/github.com/qor/roles/permission.go mode change 100644 => 100755 vendor/github.com/qor/roles/permissioner.go mode change 100644 => 100755 vendor/github.com/qor/roles/role.go mode change 100644 => 100755 vendor/github.com/qor/roles/role_manager.go mode change 100644 => 100755 vendor/github.com/qor/session/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/session/README.md mode change 100644 => 100755 vendor/github.com/qor/session/gorilla/gorilla.go mode change 100644 => 100755 vendor/github.com/qor/session/manager/manager.go mode change 100644 => 100755 vendor/github.com/qor/session/session_manager.go mode change 100644 => 100755 vendor/github.com/qor/validations/LICENSE.txt mode change 100644 => 100755 vendor/github.com/qor/validations/README.md mode change 100644 => 100755 vendor/github.com/qor/validations/callbacks.go mode change 100644 => 100755 vendor/github.com/qor/validations/validations.go mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/.gitignore mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/LICENSE mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/README.md mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/decode.go mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/make_table.go mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/table.go mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/table.txt mode change 100644 => 100755 vendor/github.com/rainycape/unidecode/unidecode.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/.gitignore mode change 100644 => 100755 vendor/github.com/theplant/cldr/LICENSE mode change 100644 => 100755 vendor/github.com/theplant/cldr/README.md mode change 100644 => 100755 vendor/github.com/theplant/cldr/calendar.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/copy.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/helper.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/locale.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/number.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/parse.go mode change 100644 => 100755 vendor/github.com/theplant/cldr/plurals.go mode change 100644 => 100755 vendor/golang.org/x/net/AUTHORS mode change 100644 => 100755 vendor/golang.org/x/net/CONTRIBUTORS mode change 100644 => 100755 vendor/golang.org/x/net/LICENSE mode change 100644 => 100755 vendor/golang.org/x/net/PATENTS mode change 100644 => 100755 vendor/golang.org/x/net/html/atom/atom.go mode change 100644 => 100755 vendor/golang.org/x/net/html/atom/table.go mode change 100644 => 100755 vendor/golang.org/x/net/html/const.go mode change 100644 => 100755 vendor/golang.org/x/net/html/doc.go mode change 100644 => 100755 vendor/golang.org/x/net/html/doctype.go mode change 100644 => 100755 vendor/golang.org/x/net/html/entity.go mode change 100644 => 100755 vendor/golang.org/x/net/html/escape.go mode change 100644 => 100755 vendor/golang.org/x/net/html/foreign.go mode change 100644 => 100755 vendor/golang.org/x/net/html/node.go mode change 100644 => 100755 vendor/golang.org/x/net/html/parse.go mode change 100644 => 100755 vendor/golang.org/x/net/html/render.go mode change 100644 => 100755 vendor/golang.org/x/net/html/token.go mode change 100644 => 100755 vendor/modules.txt diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/DogBreedingBackup.db b/DogBreedingBackup.db new file mode 100755 index 0000000000000000000000000000000000000000..0948c54dbb5e65eb28ecd51c29df006b3914aff0 GIT binary patch literal 237568 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 HXIuXtDjvCI literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/TODO.md b/TODO.md old mode 100644 new mode 100755 diff --git a/app/views/qor/action.tmpl b/app/views/qor/action.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/9.action.tmpl b/app/views/qor/actions/9.action.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/header/1.page_title.tmpl b/app/views/qor/actions/header/1.page_title.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/header/5.userinfo.tmpl b/app/views/qor/actions/header/5.userinfo.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/header/6.searchbar.tmpl b/app/views/qor/actions/header/6.searchbar.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/index/5.scope.tmpl b/app/views/qor/actions/index/5.scope.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/index/9.action.tmpl b/app/views/qor/actions/index/9.action.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/actions/index/9.advanced_filter.tmpl b/app/views/qor/actions/index/9.advanced_filter.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/ancestors/assets/qor_admin_default.css b/app/views/qor/ancestors/assets/qor_admin_default.css old mode 100644 new mode 100755 diff --git a/app/views/qor/ancestors/assets/qor_admin_default.js b/app/views/qor/ancestors/assets/qor_admin_default.js old mode 100644 new mode 100755 diff --git a/app/views/qor/ancestors/assets/vendors.js b/app/views/qor/ancestors/assets/vendors.js old mode 100644 new mode 100755 diff --git a/app/views/qor/ancestors/index.html.tmpl b/app/views/qor/ancestors/index.html.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/MaterialIcons.woff b/app/views/qor/assets/fonts/MaterialIcons.woff old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Black.ttf b/app/views/qor/assets/fonts/Roboto-Black.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-BlackItalic.ttf b/app/views/qor/assets/fonts/Roboto-BlackItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Bold.ttf b/app/views/qor/assets/fonts/Roboto-Bold.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-BoldItalic.ttf b/app/views/qor/assets/fonts/Roboto-BoldItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Italic.ttf b/app/views/qor/assets/fonts/Roboto-Italic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Light.ttf b/app/views/qor/assets/fonts/Roboto-Light.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-LightItalic.ttf b/app/views/qor/assets/fonts/Roboto-LightItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Medium.ttf b/app/views/qor/assets/fonts/Roboto-Medium.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-MediumItalic.ttf b/app/views/qor/assets/fonts/Roboto-MediumItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Regular.ttf b/app/views/qor/assets/fonts/Roboto-Regular.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-Thin.ttf b/app/views/qor/assets/fonts/Roboto-Thin.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/Roboto-ThinItalic.ttf b/app/views/qor/assets/fonts/Roboto-ThinItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-Bold.ttf b/app/views/qor/assets/fonts/RobotoCondensed-Bold.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-BoldItalic.ttf b/app/views/qor/assets/fonts/RobotoCondensed-BoldItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-Italic.ttf b/app/views/qor/assets/fonts/RobotoCondensed-Italic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-Light.ttf b/app/views/qor/assets/fonts/RobotoCondensed-Light.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-LightItalic.ttf b/app/views/qor/assets/fonts/RobotoCondensed-LightItalic.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/fonts/RobotoCondensed-Regular.ttf b/app/views/qor/assets/fonts/RobotoCondensed-Regular.ttf old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/images/bg-transparents.png b/app/views/qor/assets/images/bg-transparents.png old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/images/icon_trangle.svg b/app/views/qor/assets/images/icon_trangle.svg old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/images/logo-old.png b/app/views/qor/assets/images/logo-old.png old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/images/logo.png b/app/views/qor/assets/images/logo.png old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app.js b/app/views/qor/assets/javascripts/app.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/alert.js b/app/views/qor/assets/javascripts/app/alert.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/global-search.js b/app/views/qor/assets/javascripts/app/global-search.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/menu.js b/app/views/qor/assets/javascripts/app/menu.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/mobile.js b/app/views/qor/assets/javascripts/app/mobile.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/open-url.js b/app/views/qor/assets/javascripts/app/open-url.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/app/search.js b/app/views/qor/assets/javascripts/app/search.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/datetimepicker.js b/app/views/qor/assets/javascripts/datetimepicker.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/datepicker.js b/app/views/qor/assets/javascripts/qor/datepicker.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-action.js b/app/views/qor/assets/javascripts/qor/qor-action.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-advanced-search.js b/app/views/qor/assets/javascripts/qor/qor-advanced-search.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-autoheight.js b/app/views/qor/assets/javascripts/qor/qor-autoheight.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-bottomsheets.js b/app/views/qor/assets/javascripts/qor/qor-bottomsheets.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-common.js b/app/views/qor/assets/javascripts/qor/qor-common.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-config.js b/app/views/qor/assets/javascripts/qor/qor-config.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-datepicker.js b/app/views/qor/assets/javascripts/qor/qor-datepicker.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-dirtyform.js b/app/views/qor/assets/javascripts/qor/qor-dirtyform.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-filter-time.js b/app/views/qor/assets/javascripts/qor/qor-filter-time.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-fixer.js b/app/views/qor/assets/javascripts/qor/qor-fixer.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-inline-edit.js b/app/views/qor/assets/javascripts/qor/qor-inline-edit.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-material.js b/app/views/qor/assets/javascripts/qor/qor-material.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-modal.js b/app/views/qor/assets/javascripts/qor/qor-modal.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-radio-tabs.js b/app/views/qor/assets/javascripts/qor/qor-radio-tabs.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-redactor.js b/app/views/qor/assets/javascripts/qor/qor-redactor.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-search.js b/app/views/qor/assets/javascripts/qor/qor-search.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-select-core.js b/app/views/qor/assets/javascripts/qor/qor-select-core.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-select-many.js b/app/views/qor/assets/javascripts/qor/qor-select-many.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-select-one.js b/app/views/qor/assets/javascripts/qor/qor-select-one.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-selector.js b/app/views/qor/assets/javascripts/qor/qor-selector.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-slideout.js b/app/views/qor/assets/javascripts/qor/qor-slideout.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-sorter.js b/app/views/qor/assets/javascripts/qor/qor-sorter.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-tabs.js b/app/views/qor/assets/javascripts/qor/qor-tabs.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/qor/qor-timepicker.js b/app/views/qor/assets/javascripts/qor/qor-timepicker.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/cropper.min.js b/app/views/qor/assets/javascripts/vendors/cropper.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/jquery.min.js b/app/views/qor/assets/javascripts/vendors/jquery.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/jquery.timepicker.min.js b/app/views/qor/assets/javascripts/vendors/jquery.timepicker.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/material.min.js b/app/views/qor/assets/javascripts/vendors/material.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/moment.min.js b/app/views/qor/assets/javascripts/vendors/moment.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/mustache.min.js b/app/views/qor/assets/javascripts/vendors/mustache.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/redactor.source.min.js b/app/views/qor/assets/javascripts/vendors/redactor.source.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/javascripts/vendors/underscore.min.js b/app/views/qor/assets/javascripts/vendors/underscore.min.js old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/app.css b/app/views/qor/assets/stylesheets/app.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/chosen-sprite.png b/app/views/qor/assets/stylesheets/chosen-sprite.png old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/chosen-sprite@2x.png b/app/views/qor/assets/stylesheets/chosen-sprite@2x.png old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/datetimepicker.css b/app/views/qor/assets/stylesheets/datetimepicker.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/fonts.css b/app/views/qor/assets/stylesheets/fonts.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/qor.css b/app/views/qor/assets/stylesheets/qor.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/qor_admin_default.css b/app/views/qor/assets/stylesheets/qor_admin_default.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/redactor-font.eot b/app/views/qor/assets/stylesheets/redactor-font.eot old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app.scss b/app/views/qor/assets/stylesheets/scss/app.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_mobile.scss b/app/views/qor/assets/stylesheets/scss/app/_mobile.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_print.scss b/app/views/qor/assets/stylesheets/scss/app/_print.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_qor-icons.scss b/app/views/qor/assets/stylesheets/scss/app/_qor-icons.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_search-center.scss b/app/views/qor/assets/stylesheets/scss/app/_search-center.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_sections.scss b/app/views/qor/assets/stylesheets/scss/app/_sections.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_select.scss b/app/views/qor/assets/stylesheets/scss/app/_select.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_table.scss b/app/views/qor/assets/stylesheets/scss/app/_table.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_tabs.scss b/app/views/qor/assets/stylesheets/scss/app/_tabs.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/app/_typography.scss b/app/views/qor/assets/stylesheets/scss/app/_typography.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/datetimepicker.scss b/app/views/qor/assets/stylesheets/scss/datetimepicker.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/mdl/_color-definitions.scss b/app/views/qor/assets/stylesheets/scss/mdl/_color-definitions.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/mdl/_functions.scss b/app/views/qor/assets/stylesheets/scss/mdl/_functions.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/mdl/_mixins.scss b/app/views/qor/assets/stylesheets/scss/mdl/_mixins.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/mdl/_variables.scss b/app/views/qor/assets/stylesheets/scss/mdl/_variables.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor.scss b/app/views/qor/assets/stylesheets/scss/qor.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/datepicker.scss b/app/views/qor/assets/stylesheets/scss/qor/datepicker.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-bottomsheets.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-bottomsheets.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-filter.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-filter.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-fixer.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-fixer.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-inlineedit.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-inlineedit.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-search.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-search.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/scss/qor/qor-selector.scss b/app/views/qor/assets/stylesheets/scss/qor/qor-selector.scss old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/style-breeding-tb.css b/app/views/qor/assets/stylesheets/style-breeding-tb.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/style-parentssiblings-tb.css b/app/views/qor/assets/stylesheets/style-parentssiblings-tb.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/vendors.css b/app/views/qor/assets/stylesheets/vendors.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/vendors/cropper.min.css b/app/views/qor/assets/stylesheets/vendors/cropper.min.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/vendors/material.min.css b/app/views/qor/assets/stylesheets/vendors/material.min.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/vendors/redactor.min.css b/app/views/qor/assets/stylesheets/vendors/redactor.min.css old mode 100644 new mode 100755 diff --git a/app/views/qor/assets/stylesheets/vendors/select2.min.css b/app/views/qor/assets/stylesheets/vendors/select2.min.css old mode 100644 new mode 100755 diff --git a/app/views/qor/breedingbook/assets/qor_admin_default.css b/app/views/qor/breedingbook/assets/qor_admin_default.css old mode 100644 new mode 100755 diff --git a/app/views/qor/breedingbook/assets/qor_admin_default.js b/app/views/qor/breedingbook/assets/qor_admin_default.js old mode 100644 new mode 100755 diff --git a/app/views/qor/breedingbook/assets/vendors.js b/app/views/qor/breedingbook/assets/vendors.js old mode 100644 new mode 100755 diff --git a/app/views/qor/breedingbook/index.html.tmpl b/app/views/qor/breedingbook/index.html.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/dashboard.tmpl b/app/views/qor/dashboard.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/edit.tmpl b/app/views/qor/edit.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/index.tmpl b/app/views/qor/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/index/pagination.tmpl b/app/views/qor/index/pagination.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/index/table.tmpl b/app/views/qor/index/table.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/layout.tmpl b/app/views/qor/layout.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_1/index.tmpl b/app/views/qor/mate_table_1/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_10/index.tmpl b/app/views/qor/mate_table_10/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_2/index.tmpl b/app/views/qor/mate_table_2/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_3/index.tmpl b/app/views/qor/mate_table_3/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_4/index.tmpl b/app/views/qor/mate_table_4/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_5/index.tmpl b/app/views/qor/mate_table_5/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_6/index.tmpl b/app/views/qor/mate_table_6/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_7/index.tmpl b/app/views/qor/mate_table_7/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_8/index.tmpl b/app/views/qor/mate_table_8/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/mate_table_9/index.tmpl b/app/views/qor/mate_table_9/index.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/checkbox.tmpl b/app/views/qor/metas/filter/checkbox.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/datetime.tmpl b/app/views/qor/metas/filter/datetime.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/number.tmpl b/app/views/qor/metas/filter/number.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/select_many.tmpl b/app/views/qor/metas/filter/select_many.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/select_one.tmpl b/app/views/qor/metas/filter/select_one.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/filter/string.tmpl b/app/views/qor/metas/filter/string.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/checkbox.tmpl b/app/views/qor/metas/form/checkbox.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/collection_edit.tmpl b/app/views/qor/metas/form/collection_edit.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/date.tmpl b/app/views/qor/metas/form/date.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/datetime.tmpl b/app/views/qor/metas/form/datetime.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/float.tmpl b/app/views/qor/metas/form/float.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/hidden.tmpl b/app/views/qor/metas/form/hidden.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/hidden_primary_key.tmpl b/app/views/qor/metas/form/hidden_primary_key.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/number.tmpl b/app/views/qor/metas/form/number.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/password.tmpl b/app/views/qor/metas/form/password.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/readonly.tmpl b/app/views/qor/metas/form/readonly.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/rich_editor.tmpl b/app/views/qor/metas/form/rich_editor.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/select_many.tmpl b/app/views/qor/metas/form/select_many.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/select_one.tmpl b/app/views/qor/metas/form/select_one.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/single_edit.tmpl b/app/views/qor/metas/form/single_edit.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/string.tmpl b/app/views/qor/metas/form/string.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/form/text.tmpl b/app/views/qor/metas/form/text.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/index/collection_edit.tmpl b/app/views/qor/metas/index/collection_edit.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/index/rich_editor.tmpl b/app/views/qor/metas/index/rich_editor.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/index/select_many.tmpl b/app/views/qor/metas/index/select_many.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/index/select_one.tmpl b/app/views/qor/metas/index/select_one.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/index/single_edit.tmpl b/app/views/qor/metas/index/single_edit.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/metas/section.tmpl b/app/views/qor/metas/section.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/new.tmpl b/app/views/qor/new.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/parentssiblings/index.html.tmpl b/app/views/qor/parentssiblings/index.html.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/search_center.tmpl b/app/views/qor/search_center.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/shared/action_item.tmpl b/app/views/qor/shared/action_item.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/shared/errors.tmpl b/app/views/qor/shared/errors.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/shared/flashes.tmpl b/app/views/qor/shared/flashes.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/shared/menu.tmpl b/app/views/qor/shared/menu.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/shared/sidebar.tmpl b/app/views/qor/shared/sidebar.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/show.tmpl b/app/views/qor/show.tmpl old mode 100644 new mode 100755 diff --git a/app/views/qor/themes/grid/index/table.tmpl b/app/views/qor/themes/grid/index/table.tmpl old mode 100644 new mode 100755 diff --git a/cmd/compile_templates/main.go b/cmd/compile_templates/main.go old mode 100644 new mode 100755 diff --git a/config/bindatafs/templates_bindatafs.go b/config/bindatafs/templates_bindatafs.go old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod old mode 100644 new mode 100755 diff --git a/go.sum b/go.sum old mode 100644 new mode 100755 diff --git a/main.go b/main.go old mode 100644 new mode 100755 diff --git a/migrations/001_mv_breed_litter.sql b/migrations/001_mv_breed_litter.sql old mode 100644 new mode 100755 diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go old mode 100644 new mode 100755 index 73d944a..d398449 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -80,16 +80,15 @@ type DogTest struct { Timestamp1 time.Time `gorm:"not null"` Timestamp2 time.Time `gorm:"not null"` Timestamp3 time.Time `gorm:"not null"` - SelectMany1 []string `gorm:"not null"` + /*SelectMany1 []string `gorm:"not null"` SelectMany2 []string `gorm:"not null"` - SelectMany3 []string `gorm:"not null"` + SelectMany3 []string `gorm:"not null"`*/ } type BaseMetaFeature struct { gorm.Model Name string `gorm:"unique; not null"` ShortName string `gorm:"unique; not null"` - Type TypeEnum `gorm:"not null"` GroupID uint `gorm:"not null"` Group FeatureGroup `gorm:"foreignkey:GroupID;association_autocreate:false;association_autoupdate:false"` } @@ -109,7 +108,7 @@ type Color struct { } type SelectOneMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` Order int `gorm:"not null"` Value string `gorm:"not null"` @@ -117,28 +116,28 @@ type SelectOneMetaFeature struct { } type CheckBoxMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` QualityChecked QualityEnum `gorm:"not null"` QualityUnchecked QualityEnum `gorm:"not null"` } type StringMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } type TextMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } type IntegerMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` NeutralMin int64 `gorm:"not null"` NeutralMax int64 `gorm:"not null"` @@ -149,7 +148,7 @@ type IntegerMetaFeature struct { } type FloatMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` NeutralMin float64 `gorm:"not null"` NeutralMax float64 `gorm:"not null"` @@ -160,19 +159,19 @@ type FloatMetaFeature struct { } type DateMetaFeature struct { - BaseID uint `gorm:"not null"` - ColumnNum int `gorm:"not null"` + BaseMetaFeature + ColumnNum int `gorm:"not null"` // still decide } type TimestampMetaFeature struct { - BaseID uint `gorm:"not null"` - ColumnNum int `gorm:"not null"` + BaseMetaFeature + ColumnNum int `gorm:"not null"` // still decide } type SelectManyMetaFeature struct { - BaseID uint `gorm:"not null"` + BaseMetaFeature ColumnNum int `gorm:"not null"` Order int `gorm:"not null"` Value string `gorm:"not null"` diff --git a/mygorm/breedingbookfunc.go b/mygorm/breedingbookfunc.go old mode 100644 new mode 100755 index b3d9d08..c2c1bc7 --- a/mygorm/breedingbookfunc.go +++ b/mygorm/breedingbookfunc.go @@ -5,11 +5,20 @@ import ( "github.com/jinzhu/gorm" ) +/* +Init initializes the qor admin UI by creating and configuring all resources. +*/ + func Init2(db *gorm.DB) error { - if err := db.AutoMigrate(&DogTest{}, &BaseMetaFeature{}, &FeatureGroup{}, &Color{}, &SelectOneMetaFeature{}, &CheckBoxMetaFeature{}, - &StringMetaFeature{}, &TextMetaFeature{}, &IntegerMetaFeature{}, &FloatMetaFeature{}, &DateMetaFeature{}, &TimestampMetaFeature{}, &SelectManyMetaFeature{}).Error; err != nil { + // Set up the database + if err := db.AutoMigrate(&DogTest{}, &FeatureGroup{}, &Color{}, &SelectOneMetaFeature{}, &CheckBoxMetaFeature{}, + &StringMetaFeature{}, &TextMetaFeature{}, &IntegerMetaFeature{}, &FloatMetaFeature{}, &DateMetaFeature{}, &TimestampMetaFeature{}).Error; err != nil { return fmt.Errorf("unable to migrate DB to current state: %v", err) } + // Initalize + + // Create resources from GORM-backend model + return nil } diff --git a/mygorm/gorm.go b/mygorm/gorm.go old mode 100644 new mode 100755 index d165479..81f31d3 --- a/mygorm/gorm.go +++ b/mygorm/gorm.go @@ -520,6 +520,7 @@ func Init(dbFname string) (*gorm.DB, error) { if err != nil { return nil, fmt.Errorf("unable to create view 'all_mates': %v", err) } + Init2(db) return db, nil } diff --git a/mygorm/gorm_test.go b/mygorm/gorm_test.go old mode 100644 new mode 100755 diff --git a/myqor/breedingbook.go b/myqor/breedingbook.go new file mode 100755 index 0000000..1df0fb7 --- /dev/null +++ b/myqor/breedingbook.go @@ -0,0 +1,95 @@ +package myqor + +import ( + "github.com/flowdev/dogs/mygorm" + "github.com/jinzhu/gorm" + "github.com/qor/admin" +) + +/* +Init initializes the qor admin UI by creating and configuring all resources. +*/ + +func Init2(db *gorm.DB, adm *admin.Admin) error { + + // Resource for managing the dogs: MAIN RESOURCE + dogRes := adm.AddResource(&mygorm.DogTest{}, &admin.Config{ + Priority: 19, + }) + _ = dogRes + + featureGroupRes := adm.AddResource(&mygorm.FeatureGroup{}, &admin.Config{ + Priority: 21, + }) + _ = featureGroupRes + + colorRes := adm.AddResource(&mygorm.Color{}, &admin.Config{ + Priority: 22, + }) + _ = colorRes + + selectOneMetaFeatureRes := adm.AddResource(&mygorm.SelectOneMetaFeature{}, &admin.Config{ + Priority: 23, + }) + _ = selectOneMetaFeatureRes + + checkBoxMetaFeatureRes := adm.AddResource(&mygorm.CheckBoxMetaFeature{}, &admin.Config{ + Priority: 24, + }) + _ = checkBoxMetaFeatureRes + + stringMetaFeatureRes := adm.AddResource(&mygorm.StringMetaFeature{}, &admin.Config{ + Priority: 25, + }) + _ = stringMetaFeatureRes + + textMetaFeatureRes := adm.AddResource(&mygorm.TextMetaFeature{}, &admin.Config{ + Priority: 26, + }) + _ = textMetaFeatureRes + + integerMetaFeatureRes := adm.AddResource(&mygorm.IntegerMetaFeature{}, &admin.Config{ + Priority: 27, + }) + _ = integerMetaFeatureRes + + floatMetaFeatureRes := adm.AddResource(&mygorm.FloatMetaFeature{}, &admin.Config{ + Priority: 28, + }) + _ = floatMetaFeatureRes + + dateMetaFeatureRes := adm.AddResource(&mygorm.DateMetaFeature{}, &admin.Config{ + Priority: 29, + }) + _ = dateMetaFeatureRes + + timestampMetaFeatureRes := adm.AddResource(&mygorm.TimestampMetaFeature{}, &admin.Config{ + Priority: 30, + }) + _ = timestampMetaFeatureRes + + /*selectManyMetaFeatureRes := adm.AddResource(&mygorm.SelectManyMetaFeature{}, &admin.Config{ + Priority: 30, + }) + _ = selectManyMetaFeatureRes*/ + + /*attributes := []interface{}{"Name", "SelectOne1", "SelectOne2", "CheckBox1", "CheckBox2", "String1", "String1Quality", "String2", "String2Quality", "Text1", "Text1Quality", "Text2", "Text2Quality", "Integer1", "Integer2", "Float1", "Float2", "Date1", "Date2", "Timestamp1", "Timestamp2", "SelectMany1", "SelectMany2"} + + // find attributes dynamically + + // show given attributes + dogRes.IndexAttrs("ID", "Name") + + // Set attributes will be shown in the new page + dogRes.NewAttrs(attributes...) + + // Set attributes will be shown for the edit page, similar to new page + dogRes.EditAttrs(attributes...) + + // generate Meta information + dogRes.Meta(&admin.Meta{Name: "BirthDate", Type: "date"}) + dogRes.Meta(&admin.Meta{Name: "Gender", Config: &admin.SelectOneConfig{Collection: []string{"F", "M"}}}) + dogRes.Meta(&admin.Meta{Name: "HD", Config: &admin.SelectOneConfig{Collection: []string{mygorm.UnknownHD, "A1", "A2", "B1", "B2", "C1", "C2"}}})*/ + + return nil +} diff --git a/myqor/qor.go b/myqor/qor.go old mode 100644 new mode 100755 index d51f37d..dd5ee1d --- a/myqor/qor.go +++ b/myqor/qor.go @@ -169,6 +169,7 @@ func Init(db *gorm.DB, assetFS assetfs.Interface, workDir string) (*admin.Admin, showMateTables(db) removeDashboard(adm) + Init2(db, adm) return adm, nil } diff --git a/vendor/github.com/asaskevich/govalidator/.gitignore b/vendor/github.com/asaskevich/govalidator/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/.travis.yml b/vendor/github.com/asaskevich/govalidator/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md b/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/LICENSE b/vendor/github.com/asaskevich/govalidator/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/README.md b/vendor/github.com/asaskevich/govalidator/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/arrays.go b/vendor/github.com/asaskevich/govalidator/arrays.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/converter.go b/vendor/github.com/asaskevich/govalidator/converter.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/doc.go b/vendor/github.com/asaskevich/govalidator/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/error.go b/vendor/github.com/asaskevich/govalidator/error.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/go.mod b/vendor/github.com/asaskevich/govalidator/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/numerics.go b/vendor/github.com/asaskevich/govalidator/numerics.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/patterns.go b/vendor/github.com/asaskevich/govalidator/patterns.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/types.go b/vendor/github.com/asaskevich/govalidator/types.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/utils.go b/vendor/github.com/asaskevich/govalidator/utils.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/validator.go b/vendor/github.com/asaskevich/govalidator/validator.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/asaskevich/govalidator/wercker.yml b/vendor/github.com/asaskevich/govalidator/wercker.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/aymerick/douceur/LICENSE b/vendor/github.com/aymerick/douceur/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/aymerick/douceur/css/declaration.go b/vendor/github.com/aymerick/douceur/css/declaration.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/aymerick/douceur/css/rule.go b/vendor/github.com/aymerick/douceur/css/rule.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/aymerick/douceur/css/stylesheet.go b/vendor/github.com/aymerick/douceur/css/stylesheet.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/aymerick/douceur/parser/parser.go b/vendor/github.com/aymerick/douceur/parser/parser.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/.gitignore b/vendor/github.com/containous/go-bindata/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/.travis.yml b/vendor/github.com/containous/go-bindata/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/CONTRIBUTING.md b/vendor/github.com/containous/go-bindata/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/LICENSE b/vendor/github.com/containous/go-bindata/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/Makefile b/vendor/github.com/containous/go-bindata/Makefile old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/README.md b/vendor/github.com/containous/go-bindata/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/asset.go b/vendor/github.com/containous/go-bindata/asset.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/bytewriter.go b/vendor/github.com/containous/go-bindata/bytewriter.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/config.go b/vendor/github.com/containous/go-bindata/config.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/convert.go b/vendor/github.com/containous/go-bindata/convert.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/debug.go b/vendor/github.com/containous/go-bindata/debug.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/doc.go b/vendor/github.com/containous/go-bindata/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/release.go b/vendor/github.com/containous/go-bindata/release.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/restore.go b/vendor/github.com/containous/go-bindata/restore.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/stringwriter.go b/vendor/github.com/containous/go-bindata/stringwriter.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/containous/go-bindata/toc.go b/vendor/github.com/containous/go-bindata/toc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/context/.travis.yml b/vendor/github.com/gorilla/context/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/context/LICENSE b/vendor/github.com/gorilla/context/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/context/README.md b/vendor/github.com/gorilla/context/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/context/context.go b/vendor/github.com/gorilla/context/context.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/context/doc.go b/vendor/github.com/gorilla/context/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/css/LICENSE b/vendor/github.com/gorilla/css/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/css/scanner/doc.go b/vendor/github.com/gorilla/css/scanner/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/css/scanner/scanner.go b/vendor/github.com/gorilla/css/scanner/scanner.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/.travis.yml b/vendor/github.com/gorilla/securecookie/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/LICENSE b/vendor/github.com/gorilla/securecookie/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/README.md b/vendor/github.com/gorilla/securecookie/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/doc.go b/vendor/github.com/gorilla/securecookie/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/fuzz.go b/vendor/github.com/gorilla/securecookie/fuzz.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/securecookie/securecookie.go b/vendor/github.com/gorilla/securecookie/securecookie.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/AUTHORS b/vendor/github.com/gorilla/sessions/AUTHORS old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/LICENSE b/vendor/github.com/gorilla/sessions/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/README.md b/vendor/github.com/gorilla/sessions/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/cookie.go b/vendor/github.com/gorilla/sessions/cookie.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/cookie_go111.go b/vendor/github.com/gorilla/sessions/cookie_go111.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/doc.go b/vendor/github.com/gorilla/sessions/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/go.mod b/vendor/github.com/gorilla/sessions/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/go.sum b/vendor/github.com/gorilla/sessions/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/lex.go b/vendor/github.com/gorilla/sessions/lex.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/options.go b/vendor/github.com/gorilla/sessions/options.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/options_go111.go b/vendor/github.com/gorilla/sessions/options_go111.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/sessions.go b/vendor/github.com/gorilla/sessions/sessions.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gorilla/sessions/store.go b/vendor/github.com/gorilla/sessions/store.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/.gitignore b/vendor/github.com/gosimple/slug/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/.travis.yml b/vendor/github.com/gosimple/slug/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/LICENSE b/vendor/github.com/gosimple/slug/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/README.md b/vendor/github.com/gosimple/slug/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/doc.go b/vendor/github.com/gosimple/slug/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/go.mod b/vendor/github.com/gosimple/slug/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/go.sum b/vendor/github.com/gosimple/slug/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/languages_substitution.go b/vendor/github.com/gosimple/slug/languages_substitution.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/gosimple/slug/slug.go b/vendor/github.com/gosimple/slug/slug.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/.gitignore b/vendor/github.com/jinzhu/gorm/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/License b/vendor/github.com/jinzhu/gorm/License old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/README.md b/vendor/github.com/jinzhu/gorm/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/association.go b/vendor/github.com/jinzhu/gorm/association.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback.go b/vendor/github.com/jinzhu/gorm/callback.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_create.go b/vendor/github.com/jinzhu/gorm/callback_create.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_delete.go b/vendor/github.com/jinzhu/gorm/callback_delete.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_query.go b/vendor/github.com/jinzhu/gorm/callback_query.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_query_preload.go b/vendor/github.com/jinzhu/gorm/callback_query_preload.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_row_query.go b/vendor/github.com/jinzhu/gorm/callback_row_query.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_save.go b/vendor/github.com/jinzhu/gorm/callback_save.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/callback_update.go b/vendor/github.com/jinzhu/gorm/callback_update.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/dialect.go b/vendor/github.com/jinzhu/gorm/dialect.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/dialect_common.go b/vendor/github.com/jinzhu/gorm/dialect_common.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/dialect_mysql.go b/vendor/github.com/jinzhu/gorm/dialect_mysql.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/dialect_postgres.go b/vendor/github.com/jinzhu/gorm/dialect_postgres.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/dialect_sqlite3.go b/vendor/github.com/jinzhu/gorm/dialect_sqlite3.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/docker-compose.yml b/vendor/github.com/jinzhu/gorm/docker-compose.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/errors.go b/vendor/github.com/jinzhu/gorm/errors.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/field.go b/vendor/github.com/jinzhu/gorm/field.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/go.mod b/vendor/github.com/jinzhu/gorm/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/go.sum b/vendor/github.com/jinzhu/gorm/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/interface.go b/vendor/github.com/jinzhu/gorm/interface.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/join_table_handler.go b/vendor/github.com/jinzhu/gorm/join_table_handler.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/logger.go b/vendor/github.com/jinzhu/gorm/logger.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/main.go b/vendor/github.com/jinzhu/gorm/main.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/model.go b/vendor/github.com/jinzhu/gorm/model.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/model_struct.go b/vendor/github.com/jinzhu/gorm/model_struct.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/naming.go b/vendor/github.com/jinzhu/gorm/naming.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/scope.go b/vendor/github.com/jinzhu/gorm/scope.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/search.go b/vendor/github.com/jinzhu/gorm/search.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/test_all.sh b/vendor/github.com/jinzhu/gorm/test_all.sh old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/utils.go b/vendor/github.com/jinzhu/gorm/utils.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/gorm/wercker.yml b/vendor/github.com/jinzhu/gorm/wercker.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/inflection/LICENSE b/vendor/github.com/jinzhu/inflection/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/inflection/README.md b/vendor/github.com/jinzhu/inflection/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/inflection/go.mod b/vendor/github.com/jinzhu/inflection/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/inflection/inflections.go b/vendor/github.com/jinzhu/inflection/inflections.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/inflection/wercker.yml b/vendor/github.com/jinzhu/inflection/wercker.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/Guardfile b/vendor/github.com/jinzhu/now/Guardfile old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/License b/vendor/github.com/jinzhu/now/License old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/README.md b/vendor/github.com/jinzhu/now/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/go.mod b/vendor/github.com/jinzhu/now/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/main.go b/vendor/github.com/jinzhu/now/main.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/now.go b/vendor/github.com/jinzhu/now/now.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/jinzhu/now/wercker.yml b/vendor/github.com/jinzhu/now/wercker.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/.gitignore b/vendor/github.com/mattn/go-sqlite3/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/.travis.yml b/vendor/github.com/mattn/go-sqlite3/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/LICENSE b/vendor/github.com/mattn/go-sqlite3/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/README.md b/vendor/github.com/mattn/go-sqlite3/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/backup.go b/vendor/github.com/mattn/go-sqlite3/backup.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/callback.go b/vendor/github.com/mattn/go-sqlite3/callback.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/convert.go b/vendor/github.com/mattn/go-sqlite3/convert.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/doc.go b/vendor/github.com/mattn/go-sqlite3/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/error.go b/vendor/github.com/mattn/go-sqlite3/error.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/go.mod b/vendor/github.com/mattn/go-sqlite3/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/go.sum b/vendor/github.com/mattn/go-sqlite3/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3.go b/vendor/github.com/mattn/go-sqlite3/sqlite3.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_context.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_context.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_json1.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_json1.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_type.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_type.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h b/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h old mode 100644 new mode 100755 diff --git a/vendor/github.com/mattn/go-sqlite3/static_mock.go b/vendor/github.com/mattn/go-sqlite3/static_mock.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml b/vendor/github.com/microcosm-cc/bluemonday/.coveralls.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/.editorconfig b/vendor/github.com/microcosm-cc/bluemonday/.editorconfig old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/.gitattributes b/vendor/github.com/microcosm-cc/bluemonday/.gitattributes old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/.gitignore b/vendor/github.com/microcosm-cc/bluemonday/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/.travis.yml b/vendor/github.com/microcosm-cc/bluemonday/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md b/vendor/github.com/microcosm-cc/bluemonday/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md b/vendor/github.com/microcosm-cc/bluemonday/CREDITS.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md b/vendor/github.com/microcosm-cc/bluemonday/LICENSE.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/Makefile b/vendor/github.com/microcosm-cc/bluemonday/Makefile old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/README.md b/vendor/github.com/microcosm-cc/bluemonday/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/SECURITY.md b/vendor/github.com/microcosm-cc/bluemonday/SECURITY.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/css/handlers.go b/vendor/github.com/microcosm-cc/bluemonday/css/handlers.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/doc.go b/vendor/github.com/microcosm-cc/bluemonday/doc.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/go.mod b/vendor/github.com/microcosm-cc/bluemonday/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/go.sum b/vendor/github.com/microcosm-cc/bluemonday/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/helpers.go b/vendor/github.com/microcosm-cc/bluemonday/helpers.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/policies.go b/vendor/github.com/microcosm-cc/bluemonday/policies.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/policy.go b/vendor/github.com/microcosm-cc/bluemonday/policy.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/sanitize.go b/vendor/github.com/microcosm-cc/bluemonday/sanitize.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_go1.12.go b/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_go1.12.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_ltgo1.12.go b/vendor/github.com/microcosm-cc/bluemonday/stringwriterwriter_ltgo1.12.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.babelrc b/vendor/github.com/qor/admin/.babelrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.eslintignore b/vendor/github.com/qor/admin/.eslintignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.eslintrc b/vendor/github.com/qor/admin/.eslintrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.eslintrc.json b/vendor/github.com/qor/admin/.eslintrc.json old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.gitignore b/vendor/github.com/qor/admin/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/.travis.yml b/vendor/github.com/qor/admin/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/README.md b/vendor/github.com/qor/admin/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/action.go b/vendor/github.com/qor/admin/action.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/admin.go b/vendor/github.com/qor/admin/admin.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/auth.go b/vendor/github.com/qor/admin/auth.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/composite_primary_key_callback.go b/vendor/github.com/qor/admin/composite_primary_key_callback.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/context.go b/vendor/github.com/qor/admin/context.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/controller.go b/vendor/github.com/qor/admin/controller.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/filter.go b/vendor/github.com/qor/admin/filter.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/func_map.go b/vendor/github.com/qor/admin/func_map.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/go.mod b/vendor/github.com/qor/admin/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/go.sum b/vendor/github.com/qor/admin/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/menu.go b/vendor/github.com/qor/admin/menu.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta.go b/vendor/github.com/qor/admin/meta.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_collection_edit.go b/vendor/github.com/qor/admin/meta_collection_edit.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_configors.go b/vendor/github.com/qor/admin/meta_configors.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_datetime.go b/vendor/github.com/qor/admin/meta_datetime.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_rich_editor.go b/vendor/github.com/qor/admin/meta_rich_editor.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_select_many.go b/vendor/github.com/qor/admin/meta_select_many.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_select_one.go b/vendor/github.com/qor/admin/meta_select_one.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/meta_single_edit.go b/vendor/github.com/qor/admin/meta_single_edit.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/package.json b/vendor/github.com/qor/admin/package.json old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/resource.go b/vendor/github.com/qor/admin/resource.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/route.go b/vendor/github.com/qor/admin/route.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/route_handler.go b/vendor/github.com/qor/admin/route_handler.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/scope.go b/vendor/github.com/qor/admin/scope.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/searcher.go b/vendor/github.com/qor/admin/searcher.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/section.go b/vendor/github.com/qor/admin/section.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/settings.go b/vendor/github.com/qor/admin/settings.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/theme.go b/vendor/github.com/qor/admin/theme.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/transformer.go b/vendor/github.com/qor/admin/transformer.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/transformer_json.go b/vendor/github.com/qor/admin/transformer_json.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/transformer_xml.go b/vendor/github.com/qor/admin/transformer_xml.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/utils.go b/vendor/github.com/qor/admin/utils.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/admin/yarn.lock b/vendor/github.com/qor/admin/yarn.lock old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/assetfs/LICENSE.txt b/vendor/github.com/qor/assetfs/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/assetfs/README.md b/vendor/github.com/qor/assetfs/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/assetfs/assetfs.go b/vendor/github.com/qor/assetfs/assetfs.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/assetfs/filesystem.go b/vendor/github.com/qor/assetfs/filesystem.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/LICENSE.txt b/vendor/github.com/qor/middlewares/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/README.md b/vendor/github.com/qor/middlewares/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/default.go b/vendor/github.com/qor/middlewares/default.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/middleware.go b/vendor/github.com/qor/middlewares/middleware.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/middlewares.go b/vendor/github.com/qor/middlewares/middlewares.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/middlewares/utils.go b/vendor/github.com/qor/middlewares/utils.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.babelrc b/vendor/github.com/qor/qor/.babelrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.codeclimate.yml b/vendor/github.com/qor/qor/.codeclimate.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.csscomb.json b/vendor/github.com/qor/qor/.csscomb.json old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.csslintrc b/vendor/github.com/qor/qor/.csslintrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.editorconfig b/vendor/github.com/qor/qor/.editorconfig old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.eslintignore b/vendor/github.com/qor/qor/.eslintignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.eslintrc b/vendor/github.com/qor/qor/.eslintrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.gitattributes b/vendor/github.com/qor/qor/.gitattributes old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.gitignore b/vendor/github.com/qor/qor/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.jscsrc b/vendor/github.com/qor/qor/.jscsrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.jshintrc b/vendor/github.com/qor/qor/.jshintrc old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/.travis.yml b/vendor/github.com/qor/qor/.travis.yml old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/LICENSE.txt b/vendor/github.com/qor/qor/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/README.md b/vendor/github.com/qor/qor/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/bower.json b/vendor/github.com/qor/qor/bower.json old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/config.go b/vendor/github.com/qor/qor/config.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/context.go b/vendor/github.com/qor/qor/context.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/errors.go b/vendor/github.com/qor/qor/errors.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/go.mod b/vendor/github.com/qor/qor/go.mod old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/go.sum b/vendor/github.com/qor/qor/go.sum old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/gulpfile.js b/vendor/github.com/qor/qor/gulpfile.js old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/package.json b/vendor/github.com/qor/qor/package.json old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/crud.go b/vendor/github.com/qor/qor/resource/crud.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/meta.go b/vendor/github.com/qor/qor/resource/meta.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/meta_value.go b/vendor/github.com/qor/qor/resource/meta_value.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/processor.go b/vendor/github.com/qor/qor/resource/processor.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/resource.go b/vendor/github.com/qor/qor/resource/resource.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/resource/schema.go b/vendor/github.com/qor/qor/resource/schema.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/test_all.sh b/vendor/github.com/qor/qor/test_all.sh old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/update_all_qor_repos.sh b/vendor/github.com/qor/qor/update_all_qor_repos.sh old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/utils/buffer.go b/vendor/github.com/qor/qor/utils/buffer.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/utils/meta.go b/vendor/github.com/qor/qor/utils/meta.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/utils/params.go b/vendor/github.com/qor/qor/utils/params.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/utils/utils.go b/vendor/github.com/qor/qor/utils/utils.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/qor/yarn.lock b/vendor/github.com/qor/qor/yarn.lock old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/responder/LICENSE.txt b/vendor/github.com/qor/responder/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/responder/README.md b/vendor/github.com/qor/responder/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/responder/responder.go b/vendor/github.com/qor/responder/responder.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/LICENSE.txt b/vendor/github.com/qor/roles/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/README.md b/vendor/github.com/qor/roles/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/global.go b/vendor/github.com/qor/roles/global.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/permission.go b/vendor/github.com/qor/roles/permission.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/permissioner.go b/vendor/github.com/qor/roles/permissioner.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/role.go b/vendor/github.com/qor/roles/role.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/roles/role_manager.go b/vendor/github.com/qor/roles/role_manager.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/session/LICENSE.txt b/vendor/github.com/qor/session/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/session/README.md b/vendor/github.com/qor/session/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/session/gorilla/gorilla.go b/vendor/github.com/qor/session/gorilla/gorilla.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/session/manager/manager.go b/vendor/github.com/qor/session/manager/manager.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/session/session_manager.go b/vendor/github.com/qor/session/session_manager.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/validations/LICENSE.txt b/vendor/github.com/qor/validations/LICENSE.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/validations/README.md b/vendor/github.com/qor/validations/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/validations/callbacks.go b/vendor/github.com/qor/validations/callbacks.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/qor/validations/validations.go b/vendor/github.com/qor/validations/validations.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/.gitignore b/vendor/github.com/rainycape/unidecode/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/LICENSE b/vendor/github.com/rainycape/unidecode/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/README.md b/vendor/github.com/rainycape/unidecode/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/decode.go b/vendor/github.com/rainycape/unidecode/decode.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/make_table.go b/vendor/github.com/rainycape/unidecode/make_table.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/table.go b/vendor/github.com/rainycape/unidecode/table.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/table.txt b/vendor/github.com/rainycape/unidecode/table.txt old mode 100644 new mode 100755 diff --git a/vendor/github.com/rainycape/unidecode/unidecode.go b/vendor/github.com/rainycape/unidecode/unidecode.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/.gitignore b/vendor/github.com/theplant/cldr/.gitignore old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/LICENSE b/vendor/github.com/theplant/cldr/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/README.md b/vendor/github.com/theplant/cldr/README.md old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/calendar.go b/vendor/github.com/theplant/cldr/calendar.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/copy.go b/vendor/github.com/theplant/cldr/copy.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/helper.go b/vendor/github.com/theplant/cldr/helper.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/locale.go b/vendor/github.com/theplant/cldr/locale.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/number.go b/vendor/github.com/theplant/cldr/number.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/parse.go b/vendor/github.com/theplant/cldr/parse.go old mode 100644 new mode 100755 diff --git a/vendor/github.com/theplant/cldr/plurals.go b/vendor/github.com/theplant/cldr/plurals.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/atom/atom.go b/vendor/golang.org/x/net/html/atom/atom.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/atom/table.go b/vendor/golang.org/x/net/html/atom/table.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/doctype.go b/vendor/golang.org/x/net/html/doctype.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/entity.go b/vendor/golang.org/x/net/html/entity.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/foreign.go b/vendor/golang.org/x/net/html/foreign.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/node.go b/vendor/golang.org/x/net/html/node.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/render.go b/vendor/golang.org/x/net/html/render.go old mode 100644 new mode 100755 diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go old mode 100644 new mode 100755 diff --git a/vendor/modules.txt b/vendor/modules.txt old mode 100644 new mode 100755 From feb598966b44be2a5fefa0afee7940820dabee2c Mon Sep 17 00:00:00 2001 From: alcione Date: Wed, 3 Aug 2022 17:02:57 +0200 Subject: [PATCH 16/17] adding new tables with some extra changes --- mygorm/breedingbook.go | 13 +++++++++---- myqor/breedingbook.go | 10 +++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index d398449..434de5a 100755 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -41,10 +41,15 @@ const ( QualityPerfect = QualityEnum("perfect") ) -var AllQualityEnums = []QualityEnum{ - QualityNeutral, - QualityBad, - QualityPerfect, +var AllQualityEnums = []string{ + string(QualityNeutral), + string(QualityBad), + string(QualityPerfect), +} + +// String is implemented for nicer looking numbers. +func (q QualityEnum) String() string { + return string(q) } type DogTest struct { diff --git a/myqor/breedingbook.go b/myqor/breedingbook.go index 1df0fb7..1d53d3e 100755 --- a/myqor/breedingbook.go +++ b/myqor/breedingbook.go @@ -18,15 +18,13 @@ func Init2(db *gorm.DB, adm *admin.Admin) error { }) _ = dogRes - featureGroupRes := adm.AddResource(&mygorm.FeatureGroup{}, &admin.Config{ + adm.AddResource(&mygorm.Color{}, &admin.Config{ Priority: 21, }) - _ = featureGroupRes - colorRes := adm.AddResource(&mygorm.Color{}, &admin.Config{ + adm.AddResource(&mygorm.FeatureGroup{}, &admin.Config{ Priority: 22, }) - _ = colorRes selectOneMetaFeatureRes := adm.AddResource(&mygorm.SelectOneMetaFeature{}, &admin.Config{ Priority: 23, @@ -36,7 +34,9 @@ func Init2(db *gorm.DB, adm *admin.Admin) error { checkBoxMetaFeatureRes := adm.AddResource(&mygorm.CheckBoxMetaFeature{}, &admin.Config{ Priority: 24, }) - _ = checkBoxMetaFeatureRes + checkBoxMetaFeatureRes.Meta(&admin.Meta{Name: "QualityChecked", Config: &admin.SelectOneConfig{Collection: mygorm.AllQualityEnums}}) + + checkBoxMetaFeatureRes.Meta(&admin.Meta{Name: "QualityUnchecked", Config: &admin.SelectOneConfig{Collection: mygorm.AllQualityEnums}}) stringMetaFeatureRes := adm.AddResource(&mygorm.StringMetaFeature{}, &admin.Config{ Priority: 25, From 75bf687211c4513e5a4318fe16194527775682f1 Mon Sep 17 00:00:00 2001 From: alcione Date: Mon, 8 Aug 2022 13:57:41 +0200 Subject: [PATCH 17/17] updating meta tables --- mygorm/breedingbook.go | 22 +++++++--------------- myqor/breedingbook.go | 10 ++++++---- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/mygorm/breedingbook.go b/mygorm/breedingbook.go index 434de5a..b9dae8b 100755 --- a/mygorm/breedingbook.go +++ b/mygorm/breedingbook.go @@ -96,6 +96,7 @@ type BaseMetaFeature struct { ShortName string `gorm:"unique; not null"` GroupID uint `gorm:"not null"` Group FeatureGroup `gorm:"foreignkey:GroupID;association_autocreate:false;association_autoupdate:false"` + ColumnNum int `gorm:"unique; not null"` } type FeatureGroup struct { @@ -114,36 +115,31 @@ type Color struct { type SelectOneMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` - Order int `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` + Order int `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` } type CheckBoxMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` QualityChecked QualityEnum `gorm:"not null"` QualityUnchecked QualityEnum `gorm:"not null"` } type StringMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } type TextMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` MinLength uint `gorm:"not null"` MaxLength uint `gorm:"not null"` } type IntegerMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` NeutralMin int64 `gorm:"not null"` NeutralMax int64 `gorm:"not null"` BadMin int64 `gorm:"not null"` @@ -154,7 +150,6 @@ type IntegerMetaFeature struct { type FloatMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` NeutralMin float64 `gorm:"not null"` NeutralMax float64 `gorm:"not null"` BadMin float64 `gorm:"not null"` @@ -165,20 +160,17 @@ type FloatMetaFeature struct { type DateMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` // still decide } type TimestampMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` // still decide } type SelectManyMetaFeature struct { BaseMetaFeature - ColumnNum int `gorm:"not null"` - Order int `gorm:"not null"` - Value string `gorm:"not null"` - Quality QualityEnum `gorm:"not null"` + Order int `gorm:"not null"` + Value string `gorm:"not null"` + Quality QualityEnum `gorm:"not null"` } diff --git a/myqor/breedingbook.go b/myqor/breedingbook.go index 1d53d3e..4a8f540 100755 --- a/myqor/breedingbook.go +++ b/myqor/breedingbook.go @@ -13,10 +13,6 @@ Init initializes the qor admin UI by creating and configuring all resources. func Init2(db *gorm.DB, adm *admin.Admin) error { // Resource for managing the dogs: MAIN RESOURCE - dogRes := adm.AddResource(&mygorm.DogTest{}, &admin.Config{ - Priority: 19, - }) - _ = dogRes adm.AddResource(&mygorm.Color{}, &admin.Config{ Priority: 21, @@ -34,6 +30,7 @@ func Init2(db *gorm.DB, adm *admin.Admin) error { checkBoxMetaFeatureRes := adm.AddResource(&mygorm.CheckBoxMetaFeature{}, &admin.Config{ Priority: 24, }) + checkBoxMetaFeatureRes.Meta(&admin.Meta{Name: "QualityChecked", Config: &admin.SelectOneConfig{Collection: mygorm.AllQualityEnums}}) checkBoxMetaFeatureRes.Meta(&admin.Meta{Name: "QualityUnchecked", Config: &admin.SelectOneConfig{Collection: mygorm.AllQualityEnums}}) @@ -68,6 +65,11 @@ func Init2(db *gorm.DB, adm *admin.Admin) error { }) _ = timestampMetaFeatureRes + dogRes := adm.AddResource(&mygorm.DogTest{}, &admin.Config{ + Priority: 19, + }) + _ = dogRes + /*selectManyMetaFeatureRes := adm.AddResource(&mygorm.SelectManyMetaFeature{}, &admin.Config{ Priority: 30, })