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 (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/jinzhu/inflection"
|
"github.com/jinzhu/inflection"
|
||||||
@ -22,6 +24,14 @@ func InitDB(sql_schema string) *sqlx.DB {
|
|||||||
return 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.
|
// SchemaFromDB takes a DB connection, checks its schema metadata tables, and returns a Schema.
|
||||||
func SchemaFromDB(db *sqlx.DB) Schema {
|
func SchemaFromDB(db *sqlx.DB) Schema {
|
||||||
ret := Schema{Tables: map[string]Table{}, Indexes: map[string]Index{}}
|
ret := Schema{Tables: map[string]Table{}, Indexes: map[string]Index{}}
|
||||||
|
@ -9,6 +9,7 @@ type Column struct {
|
|||||||
HasDefaultValue bool `db:"has_default_value"`
|
HasDefaultValue bool `db:"has_default_value"`
|
||||||
DefaultValue string `db:"dflt_value"`
|
DefaultValue string `db:"dflt_value"`
|
||||||
IsPrimaryKey bool `db:"is_primary_key"`
|
IsPrimaryKey bool `db:"is_primary_key"`
|
||||||
|
PrimaryKeyRank uint `db:"primary_key_rank"`
|
||||||
IsForeignKey bool `db:"is_foreign_key"`
|
IsForeignKey bool `db:"is_foreign_key"`
|
||||||
ForeignKeyTargetTable string `db:"fk_target_table"`
|
ForeignKeyTargetTable string `db:"fk_target_table"`
|
||||||
ForeignKeyTargetColumn string `db:"fk_target_column"`
|
ForeignKeyTargetColumn string `db:"fk_target_column"`
|
||||||
|
@ -15,7 +15,8 @@ create temporary view columns as
|
|||||||
"notnull",
|
"notnull",
|
||||||
dflt_value is not null as has_default_value,
|
dflt_value is not null as has_default_value,
|
||||||
ifnull(dflt_value, 0) dflt_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,
|
fk."table" is not null as is_foreign_key,
|
||||||
ifnull(fk."table", '') as fk_target_table,
|
ifnull(fk."table", '') as fk_target_table,
|
||||||
ifnull(fk."to", '') as fk_target_column
|
ifnull(fk."to", '') as fk_target_column
|
||||||
|
Loading…
x
Reference in New Issue
Block a user