/* Package entity contains models for data storage based on GORM. See http://gorm.io/docs/ for more information about GORM. Additional information concerning data storage can be found in our Developer Guide: https://github.com/photoprism/photoprism/wiki/Storage */ package entity import ( "time" "github.com/jinzhu/gorm" "github.com/photoprism/photoprism/internal/event" ) var log = event.Log func logError(result *gorm.DB) { if result.Error != nil { log.Error(result.Error.Error()) } } // MigrateDb creates all tables and inserts default entities as needed. func MigrateDb() { Db().AutoMigrate( &Account{}, &File{}, &FileShare{}, &FileSync{}, &Photo{}, &Description{}, &Place{}, &Location{}, &Camera{}, &Lens{}, &Country{}, &Album{}, &PhotoAlbum{}, &Label{}, &Category{}, &PhotoLabel{}, &Keyword{}, &PhotoKeyword{}, &Link{}, ) CreateUnknownPlace() CreateUnknownCountry() CreateUnknownCamera() CreateUnknownLens() } // DropTables drops database tables for all known entities. func DropTables() { Db().DropTableIfExists( &Account{}, &File{}, &FileShare{}, &FileSync{}, &Photo{}, &Description{}, &Place{}, &Location{}, &Camera{}, &Lens{}, &Country{}, &Album{}, &PhotoAlbum{}, &Label{}, &Category{}, &PhotoLabel{}, &Keyword{}, &PhotoKeyword{}, &Link{}, ) } // ResetDb drops database tables for all known entities and re-creates them with fixtures. func ResetDb(testFixtures bool) { DropTables() // Make sure changes have been written to disk. time.Sleep(100 * time.Millisecond) MigrateDb() if testFixtures { // Make sure changes have been written to disk. time.Sleep(100 * time.Millisecond) CreateTestFixtures() } } // InitTestDb connects to and completely initializes the test database incl fixtures. func InitTestDb(dsn string) *Gorm { db := &Gorm{ Driver: "mysql", Dsn: dsn, } SetDbProvider(db) ResetDb(true) return db }