Skip to content

Latest commit

 

History

History
128 lines (108 loc) · 3.53 KB

README.md

File metadata and controls

128 lines (108 loc) · 3.53 KB

gopkg ORM Package

Go Report Card GoDoc OSCS Status

gopkg/orm is an componentized orm package.

it provides an easy way to configure and manage gorm.DB.

Based on gorm.io/gorm.

Install

go get github.com/wwwangxc/gopkg/orm

Quick Start

main.go

package main

import (
	"fmt"

	// gopkg/orm will automatically read configuration
	// files (./app.yaml) when package loaded
	"github.com/wwwangxc/gopkg/orm"
	"gorm.io/gorm"
)

func main() {
	db, err := orm.NewGORMProxy("db_mysql",
		orm.WithDSN(""),                    // set dsn
		orm.WithMaxIdle(20),                // set the maximum number of connections in the idle connection pool.
		orm.WithMaxIdle(1000),              // set the maximum amount of time aconnection may be reused. uint: milliseconds
		orm.WithMaxOpen(20),                // set the maximum number of open connections to the database.
		orm.WithGORMConfig(&gorm.Config{}), // set gorm config. see: https://gorm.io/docs/gorm_config.html
		orm.WithDriver("mysql"))            // set database driver, default mysql
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// MySQL
	db, err = orm.NewGORMProxy("db_mysql")
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// PostgreSQL automatically uses the extended protocol
	db, err = orm.NewGORMProxy("db_postgresql", orm.WithDriver("postgresql"))
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// PostgreSQL disables implicit prepared statement usage
	db, err = orm.NewGORMProxy("db_postgresql", orm.WithDriver("postgresql.simple"))
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// SQLite
	db, err = orm.NewGORMProxy("db_sqlite", orm.WithDriver("sqlite"))
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// SQL Server
	db, err = orm.NewGORMProxy("db_sqlserver", orm.WithDriver("sqlserver"))
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}

	// Clickhouse
	db, err = orm.NewGORMProxy("db_clickhouse", orm.WithDriver("clickhouse"))
	if err != nil {
		fmt.Printf("new gorm proxy fail. error:%v", err)
	}
}

app.yaml*

client:
  mysql:
    max_idle: 11
    max_open: 22
    max_idle_time: 33
  postgresql:
    max_idle: 11
    max_open: 22
    max_idle_time: 33
  sqlite:
    max_idle: 11
    max_open: 22
    max_idle_time: 33
  sqlserver:
    max_idle: 11
    max_open: 22
    max_idle_time: 33
  clickhouse:
    max_idle: 11
    max_open: 22
    max_idle_time: 33
  service:
    - name: db_mysql
      dsn: root:root@tcp(127.0.0.1:3306)/db1?charset=utf8&parseTime=True
      driver: mysql
      max_idle: 111
      max_open: 222
      max_idle_time: 333
    - name: db_postgresql
      dsn: "user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
      driver: postgresql
    - name: db_sqlite
      dsn: gopkg.db
      driver: sqlite
    - name: db_sqlserver
      dsn: sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm
      driver: sqlserver
    - name: db_clickhouse
      dsn: tcp://localhost:9000?database=gorm&username=gorm&password=gorm&read_timeout=10&write_timeout=20
      driver: clickhouse