Skip to content

linlexing/dbx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

readme

The database enhancement operations library. Support mysql postgresql oracle dmdb hive sqlite database type. Provides data structure definitions, data manipulation, and paging classes.


package main

import (
	_ "github.com/jackc/pgx/v5"
	_ "github.com/jackc/pgx/v5/stdlib"
	"github.com/linlexing/dbx/ddb"
	_ "github.com/linlexing/dbx/postgres"
	"github.com/linlexing/dbx/schema"
)

func main() {
	db, err := ddb.Openx("pgx", "postgres://common:123456@localhost:5432/postgres?sslmode=disable")
	if err != nil {
		panic(err)
	}
	//table struct define
	//create table
	tabTest := schema.NewTable("TestTab")
	tabTest.Columns = []*schema.Column{
		{
			Name:      "ID",
			Type:      schema.TypeString,
			MaxLength: 24,
		},
		{
			Name:      "Name",
			Type:      schema.TypeString,
			MaxLength: 50,
		},
		{
			Name: "Remark",
			Type: schema.TypeString,
		},
		{
			Name: "Age",
			Type: schema.TypeInt,
		},
		{
			Name: "Birthday",
			Type: schema.TypeDatetime,
		},
	}
	tabTest.PrimaryKeys = []string{"ID"}
	// list, err := tabTest.Extract(db.DriverName(), db)
	// if err != nil {
	// 	panic(err)
	// }
	// for _, l := range list {
	// 	println(l)
	// }
	//db change
	if err := tabTest.Update(db.DriverName(), db); err != nil {
		panic(err)
	}
	defer func() {
		if _, err := db.Exec("drop table TestTab"); err != nil {
			panic(err)
		}
	}()
	//change struct
	tabTest.ColumnByName("Name").MaxLength = 100
	tabTest.ColumnByName("Age").Type = schema.TypeFloat
	//remove Remark
	tabTest.Columns = append(tabTest.Columns[:2], tabTest.Columns[3:]...)
	tabTest.Columns = append(tabTest.Columns, &schema.Column{
		Name:      "Detail",
		Type:      schema.TypeString,
		MaxLength: 100,
	})
	// list, err = tabTest.Extract(db.DriverName(), db)
	// if err != nil {
	// 	panic(err)
	// }
	// for _, l := range list {
	// 	println(l)
	// }
	//db change
	if err := tabTest.Update(db.DriverName(), db); err != nil {
		panic(err)
	}
}