Add Schema definition changes to support the linter functions
Some checks failed
CI / release-test (push) Failing after 16s

This commit is contained in:
wispem-wantex 2025-08-23 18:55:13 -07:00
parent 8b422ada11
commit 100b53d799
3 changed files with 13 additions and 1 deletions

View File

@ -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{}}

View File

@ -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"`

View File

@ -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