informationschemamodel.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package model
  2. import (
  3. "github.com/tal-tech/go-zero/core/stores/sqlx"
  4. )
  5. type (
  6. InformationSchemaModel struct {
  7. conn sqlx.SqlConn
  8. }
  9. Column struct {
  10. Name string `db:"COLUMN_NAME"`
  11. DataType string `db:"DATA_TYPE"`
  12. Key string `db:"COLUMN_KEY"`
  13. Extra string `db:"EXTRA"`
  14. Comment string `db:"COLUMN_COMMENT"`
  15. ColumnDefault interface{} `db:"COLUMN_DEFAULT"`
  16. IsNullAble string `db:"IS_NULLABLE"`
  17. }
  18. )
  19. func NewInformationSchemaModel(conn sqlx.SqlConn) *InformationSchemaModel {
  20. return &InformationSchemaModel{conn: conn}
  21. }
  22. func (m *InformationSchemaModel) GetAllTables(database string) ([]string, error) {
  23. query := `select TABLE_NAME from TABLES where TABLE_SCHEMA = ?`
  24. var tables []string
  25. err := m.conn.QueryRows(&tables, query, database)
  26. if err != nil {
  27. return nil, err
  28. }
  29. return tables, nil
  30. }
  31. func (m *InformationSchemaModel) FindByTableName(db, table string) ([]*Column, error) {
  32. querySql := `select COLUMN_NAME,COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE,COLUMN_KEY,EXTRA,COLUMN_COMMENT from COLUMNS where TABLE_SCHEMA = ? and TABLE_NAME = ?`
  33. var reply []*Column
  34. err := m.conn.QueryRows(&reply, querySql, db, table)
  35. return reply, err
  36. }