// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, // You can obtain one at https://github.com/gogf/gf. // package main import ( "context" "database/sql" "fmt" "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/encoding/gbase64" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/contrib/drivers/mysql/v2" ) const ( mysqlDriverName = "hellosql" quoteChar = "`" ) func init() { var ( err error driverObj = &DriverMysql{ Driver: mysql.Driver{}, } ) if err = gdb.Register(mysqlDriverName, driverObj); err != nil { panic(err) } } // New creates and returns a database object for mysql. // It implements the interface of gdb.Driver for extra database driver installation. func (d *DriverMysql) New(core *gdb.Core, node *gdb.ConfigNode) (gdb.DB, error) { return &DriverMysql{ Driver: mysql.Driver{Core: core}, }, nil } // GetChars returns the security char for this type of database. func (d *DriverMysql) GetChars() (charLeft string, charRight string) { return quoteChar, quoteChar } func (d *DriverMysql) Open(config *gdb.ConfigNode) (db *sql.DB, err error) { fmt.Println("DriverMysql.Open") fmt.Println("config.Pass(encode):" + config.Pass) // Decrypt the password if it is encrypted. config.Pass, err = gbase64.DecodeToString(config.Pass) if err != nil { return nil, err } fmt.Println("config.Pass(decode):" + config.Pass) return d.Driver.Open(config) } func (d *DriverMysql) Tables(ctx context.Context, schema ...string) (tables []string, err error) { return d.Driver.Tables(ctx, schema...) } func (d *DriverMysql) TableFields(ctx context.Context, table string, schema ...string) (fields map[string]*gdb.TableField, err error) { return d.Driver.TableFields(ctx, table, schema...) } // DriverMysql is the driver for mysql database. type DriverMysql struct { mysql.Driver } func main() { list, err := g.DB().Tables(context.Background()) if err != nil { panic(err) } fmt.Println(list) }