init - add project files
This commit is contained in:
31
tools/jet-2.12.0/generator/metadata/column_meta_data.go
Normal file
31
tools/jet-2.12.0/generator/metadata/column_meta_data.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package metadata
|
||||
|
||||
// Column struct
|
||||
type Column struct {
|
||||
Name string `sql:"primary_key"`
|
||||
IsPrimaryKey bool
|
||||
IsNullable bool
|
||||
IsGenerated bool
|
||||
HasDefault bool
|
||||
DataType DataType
|
||||
Comment string
|
||||
}
|
||||
|
||||
// DataTypeKind is database type kind(base, enum, user-defined, array)
|
||||
type DataTypeKind string
|
||||
|
||||
// DataTypeKind possible values
|
||||
const (
|
||||
BaseType DataTypeKind = "base"
|
||||
EnumType DataTypeKind = "enum"
|
||||
UserDefinedType DataTypeKind = "user-defined"
|
||||
ArrayType DataTypeKind = "array"
|
||||
RangeType DataTypeKind = "range"
|
||||
)
|
||||
|
||||
// DataType contains information about column data type
|
||||
type DataType struct {
|
||||
Name string
|
||||
Kind DataTypeKind
|
||||
IsUnsigned bool
|
||||
}
|
||||
51
tools/jet-2.12.0/generator/metadata/dialect_query_set.go
Normal file
51
tools/jet-2.12.0/generator/metadata/dialect_query_set.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package metadata
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// TableType is type of database table(view or base)
|
||||
type TableType string
|
||||
|
||||
// SQL table types
|
||||
const (
|
||||
BaseTable TableType = "BASE TABLE"
|
||||
ViewTable TableType = "VIEW"
|
||||
)
|
||||
|
||||
// DialectQuerySet is set of methods necessary to retrieve dialect metadata information
|
||||
type DialectQuerySet interface {
|
||||
GetTablesMetaData(db *sql.DB, schemaName string, tableType TableType) ([]Table, error)
|
||||
GetEnumsMetaData(db *sql.DB, schemaName string) ([]Enum, error)
|
||||
}
|
||||
|
||||
// GetSchema retrieves Schema information from database
|
||||
func GetSchema(db *sql.DB, querySet DialectQuerySet, schemaName string) (Schema, error) {
|
||||
tablesMetaData, err := querySet.GetTablesMetaData(db, schemaName, BaseTable)
|
||||
if err != nil {
|
||||
return Schema{}, fmt.Errorf("failed to get %s tables metadata: %w", schemaName, err)
|
||||
}
|
||||
|
||||
viewMetaData, err := querySet.GetTablesMetaData(db, schemaName, ViewTable)
|
||||
if err != nil {
|
||||
return Schema{}, fmt.Errorf("failed to get %s view metadata: %w", schemaName, err)
|
||||
}
|
||||
|
||||
enumsMetaData, err := querySet.GetEnumsMetaData(db, schemaName)
|
||||
if err != nil {
|
||||
return Schema{}, fmt.Errorf("failed to get %s enum metadata: %w", schemaName, err)
|
||||
}
|
||||
|
||||
ret := Schema{
|
||||
Name: schemaName,
|
||||
TablesMetaData: tablesMetaData,
|
||||
ViewsMetaData: viewMetaData,
|
||||
EnumsMetaData: enumsMetaData,
|
||||
}
|
||||
|
||||
fmt.Println(" FOUND", len(ret.TablesMetaData), "table(s),", len(ret.ViewsMetaData), "view(s),",
|
||||
len(ret.EnumsMetaData), "enum(s)")
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
8
tools/jet-2.12.0/generator/metadata/enum_meta_data.go
Normal file
8
tools/jet-2.12.0/generator/metadata/enum_meta_data.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package metadata
|
||||
|
||||
// Enum metadata struct
|
||||
type Enum struct {
|
||||
Name string `sql:"primary_key"`
|
||||
Comment string
|
||||
Values []string
|
||||
}
|
||||
14
tools/jet-2.12.0/generator/metadata/schema_meta_data.go
Normal file
14
tools/jet-2.12.0/generator/metadata/schema_meta_data.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package metadata
|
||||
|
||||
// Schema struct
|
||||
type Schema struct {
|
||||
Name string
|
||||
TablesMetaData []Table
|
||||
ViewsMetaData []Table
|
||||
EnumsMetaData []Enum
|
||||
}
|
||||
|
||||
// IsEmpty returns true if schema info does not contain any table, views or enums metadata
|
||||
func (s Schema) IsEmpty() bool {
|
||||
return len(s.TablesMetaData) == 0 && len(s.ViewsMetaData) == 0 && len(s.EnumsMetaData) == 0
|
||||
}
|
||||
23
tools/jet-2.12.0/generator/metadata/table_meta_data.go
Normal file
23
tools/jet-2.12.0/generator/metadata/table_meta_data.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package metadata
|
||||
|
||||
// Table metadata struct
|
||||
type Table struct {
|
||||
Name string `sql:"primary_key"`
|
||||
Comment string
|
||||
Columns []Column
|
||||
}
|
||||
|
||||
// MutableColumns returns list of mutable columns for table
|
||||
func (t Table) MutableColumns() []Column {
|
||||
var ret []Column
|
||||
|
||||
for _, column := range t.Columns {
|
||||
if column.IsPrimaryKey || column.IsGenerated {
|
||||
continue
|
||||
}
|
||||
|
||||
ret = append(ret, column)
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
Reference in New Issue
Block a user