fix(mysql): resolve lint issues in reader and writer

This commit is contained in:
2026-10-03 20:17:16 +02:00
parent 43265dac0f
commit 70282fff73
3 changed files with 16 additions and 1 deletions
+9
View File
@@ -73,6 +73,7 @@ func (r *Reader) ReadDatabase() (*models.Database, error) {
} }
return db, nil return db, nil
} }
func (r *Reader) ReadSchema() (*models.Schema, error) { func (r *Reader) ReadSchema() (*models.Schema, error) {
db, err := r.ReadDatabase() db, err := r.ReadDatabase()
if err != nil { if err != nil {
@@ -83,6 +84,7 @@ func (r *Reader) ReadSchema() (*models.Schema, error) {
} }
return db.Schemas[0], nil return db.Schemas[0], nil
} }
func (r *Reader) ReadTable() (*models.Table, error) { func (r *Reader) ReadTable() (*models.Table, error) {
s, err := r.ReadSchema() s, err := r.ReadSchema()
if err != nil { if err != nil {
@@ -93,6 +95,7 @@ func (r *Reader) ReadTable() (*models.Table, error) {
} }
return s.Tables[0], nil return s.Tables[0], nil
} }
func (r *Reader) connect() error { func (r *Reader) connect() error {
db, err := sql.Open("mysql", r.options.ConnectionString) db, err := sql.Open("mysql", r.options.ConnectionString)
if err != nil { if err != nil {
@@ -105,6 +108,7 @@ func (r *Reader) connect() error {
r.db = db r.db = db
return nil return nil
} }
func (r *Reader) close() { func (r *Reader) close() {
if r.db != nil { if r.db != nil {
_ = r.db.Close() _ = r.db.Close()
@@ -128,6 +132,7 @@ func (r *Reader) querySchemas(current string) ([]*models.Schema, error) {
} }
return out, rows.Err() return out, rows.Err()
} }
func (r *Reader) queryTables(schema string) ([]*models.Table, error) { func (r *Reader) queryTables(schema string) ([]*models.Table, error) {
rows, err := r.db.QueryContext(r.ctx, "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME", schema) rows, err := r.db.QueryContext(r.ctx, "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME", schema)
if err != nil { if err != nil {
@@ -144,6 +149,7 @@ func (r *Reader) queryTables(schema string) ([]*models.Table, error) {
} }
return out, rows.Err() return out, rows.Err()
} }
func (r *Reader) queryColumns(schema, table string) (map[string]*models.Column, error) { func (r *Reader) queryColumns(schema, table string) (map[string]*models.Column, error) {
rows, err := r.db.QueryContext(r.ctx, `SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, ORDINAL_POSITION, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? ORDER BY ORDINAL_POSITION`, schema, table) rows, err := r.db.QueryContext(r.ctx, `SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, ORDINAL_POSITION, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? ORDER BY ORDINAL_POSITION`, schema, table)
if err != nil { if err != nil {
@@ -171,6 +177,7 @@ func (r *Reader) queryColumns(schema, table string) (map[string]*models.Column,
} }
return out, rows.Err() return out, rows.Err()
} }
func (r *Reader) queryConstraints(schema, table string) (map[string]*models.Constraint, error) { func (r *Reader) queryConstraints(schema, table string) (map[string]*models.Constraint, error) {
rows, err := r.db.QueryContext(r.ctx, `SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, COLUMN_NAME, REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, ORDINAL_POSITION FROM information_schema.KEY_COLUMN_USAGE k JOIN information_schema.TABLE_CONSTRAINTS t USING (CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAME) WHERE k.TABLE_SCHEMA=? AND k.TABLE_NAME=? ORDER BY CONSTRAINT_NAME, ORDINAL_POSITION`, schema, table) rows, err := r.db.QueryContext(r.ctx, `SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, COLUMN_NAME, REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, ORDINAL_POSITION FROM information_schema.KEY_COLUMN_USAGE k JOIN information_schema.TABLE_CONSTRAINTS t USING (CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAME) WHERE k.TABLE_SCHEMA=? AND k.TABLE_NAME=? ORDER BY CONSTRAINT_NAME, ORDINAL_POSITION`, schema, table)
if err != nil { if err != nil {
@@ -207,6 +214,7 @@ func (r *Reader) queryConstraints(schema, table string) (map[string]*models.Cons
} }
return out, rows.Err() return out, rows.Err()
} }
func (r *Reader) queryIndexes(schema, table string) (map[string]*models.Index, error) { func (r *Reader) queryIndexes(schema, table string) (map[string]*models.Index, error) {
rows, err := r.db.QueryContext(r.ctx, `SELECT INDEX_NAME, NON_UNIQUE, COLUMN_NAME, SEQ_IN_INDEX, INDEX_TYPE FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND INDEX_NAME <> 'PRIMARY' ORDER BY INDEX_NAME, SEQ_IN_INDEX`, schema, table) rows, err := r.db.QueryContext(r.ctx, `SELECT INDEX_NAME, NON_UNIQUE, COLUMN_NAME, SEQ_IN_INDEX, INDEX_TYPE FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND INDEX_NAME <> 'PRIMARY' ORDER BY INDEX_NAME, SEQ_IN_INDEX`, schema, table)
if err != nil { if err != nil {
@@ -231,6 +239,7 @@ func (r *Reader) queryIndexes(schema, table string) (map[string]*models.Index, e
} }
return out, rows.Err() return out, rows.Err()
} }
func (r *Reader) deriveRelationship(t *models.Table, c *models.Constraint) { func (r *Reader) deriveRelationship(t *models.Table, c *models.Constraint) {
n := fmt.Sprintf("%s_to_%s", t.Name, c.ReferencedTable) n := fmt.Sprintf("%s_to_%s", t.Name, c.ReferencedTable)
rel := models.InitRelationship(n, models.OneToMany) rel := models.InitRelationship(n, models.OneToMany)
+2 -1
View File
@@ -1,8 +1,9 @@
package mysql package mysql
import ( import (
"git.warky.dev/wdevs/relspecgo/pkg/readers"
"testing" "testing"
"git.warky.dev/wdevs/relspecgo/pkg/readers"
) )
func TestReaderMapDataType(t *testing.T) { func TestReaderMapDataType(t *testing.T) {
+5
View File
@@ -55,6 +55,7 @@ func (w *Writer) writeDatabaseDDL(db *models.Database) error {
} }
return nil return nil
} }
func (w *Writer) WriteSchema(s *models.Schema) error { func (w *Writer) WriteSchema(s *models.Schema) error {
for _, t := range s.Tables { for _, t := range s.Tables {
if err := w.writeTable(s, t); err != nil { if err := w.writeTable(s, t); err != nil {
@@ -63,12 +64,14 @@ func (w *Writer) WriteSchema(s *models.Schema) error {
} }
return nil return nil
} }
func (w *Writer) WriteTable(t *models.Table) error { func (w *Writer) WriteTable(t *models.Table) error {
if w.writer == nil { if w.writer == nil {
w.writer = os.Stdout w.writer = os.Stdout
} }
return w.writeTable(nil, t) return w.writeTable(nil, t)
} }
func (w *Writer) writeTable(s *models.Schema, t *models.Table) error { func (w *Writer) writeTable(s *models.Schema, t *models.Table) error {
name := t.Name name := t.Name
if s != nil { if s != nil {
@@ -125,6 +128,7 @@ func (w *Writer) writeTable(s *models.Schema, t *models.Table) error {
} }
return nil return nil
} }
func (w *Writer) execute(dbm *models.Database, conn string) error { func (w *Writer) execute(dbm *models.Database, conn string) error {
var b strings.Builder var b strings.Builder
old := w.writer old := w.writer
@@ -150,6 +154,7 @@ func (w *Writer) execute(dbm *models.Database, conn string) error {
} }
return nil return nil
} }
func stripComments(sqlText string) string { func stripComments(sqlText string) string {
lines := strings.Split(sqlText, "\n") lines := strings.Split(sqlText, "\n")
kept := lines[:0] kept := lines[:0]