Add Schema definition changes to support the linter functions
Some checks failed
CI / release-test (push) Failing after 16s
Some checks failed
CI / release-test (push) Failing after 16s
This commit is contained in:
parent
8b422ada11
commit
100b53d799
@ -2,6 +2,8 @@ package schema
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/jinzhu/inflection"
|
||||
@ -22,6 +24,14 @@ func InitDB(sql_schema string) *sqlx.DB {
|
||||
return db
|
||||
}
|
||||
|
||||
func SchemaFromSQLFile(filepath string) (Schema, error) {
|
||||
sqlBytes, err := os.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return Schema{}, fmt.Errorf("failed to read SQL file: %w", err)
|
||||
}
|
||||
return SchemaFromDB(InitDB(string(sqlBytes))), nil
|
||||
}
|
||||
|
||||
// SchemaFromDB takes a DB connection, checks its schema metadata tables, and returns a Schema.
|
||||
func SchemaFromDB(db *sqlx.DB) Schema {
|
||||
ret := Schema{Tables: map[string]Table{}, Indexes: map[string]Index{}}
|
||||
|
@ -9,6 +9,7 @@ type Column struct {
|
||||
HasDefaultValue bool `db:"has_default_value"`
|
||||
DefaultValue string `db:"dflt_value"`
|
||||
IsPrimaryKey bool `db:"is_primary_key"`
|
||||
PrimaryKeyRank uint `db:"primary_key_rank"`
|
||||
IsForeignKey bool `db:"is_foreign_key"`
|
||||
ForeignKeyTargetTable string `db:"fk_target_table"`
|
||||
ForeignKeyTargetColumn string `db:"fk_target_column"`
|
||||
|
@ -15,7 +15,8 @@ create temporary view columns as
|
||||
"notnull",
|
||||
dflt_value is not null as has_default_value,
|
||||
ifnull(dflt_value, 0) dflt_value,
|
||||
pk as is_primary_key,
|
||||
pk != 0 as is_primary_key,
|
||||
pk as primary_key_rank,
|
||||
fk."table" is not null as is_foreign_key,
|
||||
ifnull(fk."table", '') as fk_target_table,
|
||||
ifnull(fk."to", '') as fk_target_column
|
||||
|
Loading…
x
Reference in New Issue
Block a user