fix diff round-trip comparison
This commit is contained in:
@@ -538,8 +538,13 @@ func (r *Reader) queryCheckConstraints(schemaName string) (map[string][]*models.
|
||||
FROM information_schema.table_constraints tc
|
||||
JOIN information_schema.check_constraints cc
|
||||
ON tc.constraint_name = cc.constraint_name
|
||||
AND cc.constraint_schema = tc.table_schema
|
||||
JOIN pg_catalog.pg_constraint pc
|
||||
ON pc.conname = tc.constraint_name
|
||||
AND pc.connamespace = (SELECT oid FROM pg_namespace WHERE nspname = tc.table_schema)
|
||||
WHERE tc.constraint_type = 'CHECK'
|
||||
AND tc.table_schema = $1
|
||||
AND pc.contype = 'c'
|
||||
`
|
||||
|
||||
rows, err := r.conn.Query(r.ctx, query, schemaName)
|
||||
@@ -579,7 +584,12 @@ func (r *Reader) queryIndexes(schemaName string) (map[string][]*models.Index, er
|
||||
indexname,
|
||||
indexdef
|
||||
FROM pg_indexes
|
||||
JOIN pg_catalog.pg_class idx ON idx.relname = indexname
|
||||
JOIN pg_catalog.pg_index i ON i.indexrelid = idx.oid
|
||||
JOIN pg_catalog.pg_namespace idx_ns ON idx_ns.oid = idx.relnamespace
|
||||
WHERE schemaname = $1
|
||||
AND idx_ns.nspname = schemaname
|
||||
AND NOT i.indisprimary
|
||||
ORDER BY schemaname, tablename, indexname
|
||||
`
|
||||
|
||||
|
||||
@@ -341,8 +341,10 @@ func (r *Reader) deriveRelationship(table *models.Table, fk *models.Constraint)
|
||||
relationship := models.InitRelationship(relationshipName, models.OneToMany)
|
||||
relationship.FromTable = table.Name
|
||||
relationship.FromSchema = table.Schema
|
||||
relationship.FromColumns = append([]string(nil), fk.Columns...)
|
||||
relationship.ToTable = fk.ReferencedTable
|
||||
relationship.ToSchema = fk.ReferencedSchema
|
||||
relationship.ToColumns = append([]string(nil), fk.ReferencedColumns...)
|
||||
relationship.ForeignKey = fk.Name
|
||||
|
||||
// Store constraint actions in properties
|
||||
|
||||
@@ -2,6 +2,7 @@ package pgsql
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"git.warky.dev/wdevs/relspecgo/pkg/models"
|
||||
@@ -359,6 +360,14 @@ func TestDeriveRelationship(t *testing.T) {
|
||||
t.Errorf("Expected ToTable 'users', got '%s'", rel.ToTable)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(rel.FromColumns, []string{"user_id"}) {
|
||||
t.Errorf("Expected FromColumns [user_id], got %v", rel.FromColumns)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(rel.ToColumns, []string{"id"}) {
|
||||
t.Errorf("Expected ToColumns [id], got %v", rel.ToColumns)
|
||||
}
|
||||
|
||||
if rel.ForeignKey != "fk_orders_user_id" {
|
||||
t.Errorf("Expected ForeignKey 'fk_orders_user_id', got '%s'", rel.ForeignKey)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user