/
pg_orm.go
53 lines (41 loc) · 1.03 KB
/
pg_orm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2019 Andrew Donelson. All rights reserved.
// Use of this source code is governed by a BSD 2-Clause
// "Simplified" License that can be found at
// https://github.com/go-pg/pg/blob/master/LICENSE
// Wrapper that simplifies use of Golang ORM with focus on PostgreSQL
package pgorm
import (
"log"
"github.com/go-pg/pg"
)
// Database implements the PostgreSQL ORM
type Database struct {
DB *pg.DB
Log *log.Logger
}
// NewDatabase - create instance of Database
func NewDatabase(db *pg.DB, log *log.Logger) IDatabase {
return &Database{
DB: db,
Log: log,
}
}
func NewDB(dbHost, dbUser, dbPass, dbName string, secured, migrate, droptables bool, models ...interface{}) (*Model, error) {
var err error
mod := NewModel(migrate, droptables)
err = mod.OpenWithDefault("postgres", "blog", "")
if err != nil {
return nil, err
}
//register new model(s)
err = mod.Register(&models)
if err != nil {
return nil, err
}
//migrate model
err = mod.AutoMigrateAll()
if err != nil {
return nil, err
}
return mod, nil
}