NewDatabase returns new project database object based on storage config.
(cfg *config.StorageConfig)
| 28 | |
| 29 | // NewDatabase returns new project database object based on storage config. |
| 30 | func NewDatabase(cfg *config.StorageConfig) (storage *gorp.DbMap, err error) { |
| 31 | var db *sql.DB |
| 32 | |
| 33 | if cfg == nil { |
| 34 | // using test database |
| 35 | db, err = sql.Open("sqlite3", "file::memory:?mode=memory&cache=shared") |
| 36 | } else if cfg.UseLocalDatabase { |
| 37 | db, err = sql.Open("sqlite3", cfg.DatabaseID) |
| 38 | } else { |
| 39 | dsnCfg := client.NewConfig() |
| 40 | dsnCfg.DatabaseID = cfg.DatabaseID |
| 41 | db, err = sql.Open("covenantsql", dsnCfg.FormatDSN()) |
| 42 | } |
| 43 | |
| 44 | if err != nil { |
| 45 | err = errors.Wrapf(err, "open proxy database failed") |
| 46 | return |
| 47 | } |
| 48 | |
| 49 | storage = &gorp.DbMap{Db: db, Dialect: gorp.SqliteDialect{}} |
| 50 | return |
| 51 | } |