feat: mv internal/pkg to root [skip ci]
This commit is contained in:
		
							
								
								
									
										70
									
								
								pkg/database/pgsqldb/gorm.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								pkg/database/pgsqldb/gorm.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| package pgsqldb | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 	"github.com/spf13/viper" | ||||
|  | ||||
| 	"gorm.io/driver/postgres" | ||||
| 	"gorm.io/gorm" | ||||
|  | ||||
| 	"git.esin.io/kimbon/weapp/internal/pkg/logging/gormlogrus" | ||||
| ) | ||||
|  | ||||
| func DefaultDBWithGORM() *gorm.DB { | ||||
| 	url := NewConnectionString() | ||||
| 	logger := logrus.StandardLogger() | ||||
| 	db, err := NewGORM(url, logger) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	return db | ||||
| } | ||||
|  | ||||
| func NewGORM(url string, logger logrus.FieldLogger) (*gorm.DB, error) { | ||||
| 	db, err := gorm.Open( | ||||
| 		postgres.Open(url), | ||||
| 		&gorm.Config{ | ||||
| 			FullSaveAssociations: true, | ||||
| 			Logger:               gormlogrus.New(logger), | ||||
| 		}) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return db, nil | ||||
| } | ||||
|  | ||||
| type connectionString struct { | ||||
| 	host            string | ||||
| 	port            int32 | ||||
| 	user            string | ||||
| 	password        string | ||||
| 	database        string | ||||
| 	applicationName string | ||||
| 	timezone        string | ||||
| 	sslModel        string | ||||
| } | ||||
|  | ||||
| func NewConnectionString() string { | ||||
| 	c := connectionString{ | ||||
| 		host:            viper.GetString("db.postgres.host"), | ||||
| 		port:            viper.GetInt32("db.postgres.port"), | ||||
| 		database:        viper.GetString("db.postgres.database"), | ||||
| 		user:            viper.GetString("db.postgres.user"), | ||||
| 		password:        viper.GetString("db.postgres.password"), | ||||
| 		applicationName: viper.GetString("db.postgres.application_name"), | ||||
| 		timezone:        viper.GetString("db.postgres.tz"), | ||||
| 		sslModel:        viper.GetString("db.postgres.ssl.mode"), | ||||
| 	} | ||||
| 	return c.URLString() | ||||
| } | ||||
|  | ||||
| func (c connectionString) URLString() string { | ||||
| 	return fmt.Sprintf(c.Format(), | ||||
| 		c.user, c.password, c.host, c.port, c.database, c.sslModel, c.applicationName, c.timezone) | ||||
| } | ||||
|  | ||||
| func (c connectionString) Format() string { | ||||
| 	return "postgres://%s:%s@%s:%d/%s?sslmode=%s&application_name=%s&timezone=%s" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user