mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2024-12-15 09:44:47 +02:00
426 lines
9.2 KiB
Go
426 lines
9.2 KiB
Go
package create_files
|
|
|
|
import (
|
|
"github.com/ManyakRus/crud_generator/internal/types"
|
|
"github.com/ManyakRus/crud_generator/pkg/dbmeta"
|
|
"github.com/ManyakRus/starter/log"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
// Has_Column_ExtID_ConnectionID_Int64 - возвращает true если есть поля ExtId и ConnectionID, если они int64
|
|
func Has_Column_ExtID_ConnectionID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["ext_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
Column1, ok = Table1.MapColumns["connection_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_IsDeleted_Bool - возвращает true если есть поле is_deleted
|
|
func Has_Column_IsDeleted_Bool(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["is_deleted"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "bool" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_ColumnType_Time - возвращает true если есть колонка с типом время
|
|
func Has_ColumnType_Time(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//сортировка по названию колонок
|
|
keys := make([]string, 0, len(Table1.MapColumns))
|
|
for k := range Table1.MapColumns {
|
|
keys = append(keys, k)
|
|
}
|
|
sort.Strings(keys)
|
|
|
|
for _, key1 := range keys {
|
|
Column1, ok := Table1.MapColumns[key1]
|
|
if ok == false {
|
|
log.Panic("Table1.MapColumns[key1] = false")
|
|
}
|
|
SQLMapping1, ok := dbmeta.GetMappings()[Column1.Type]
|
|
if ok == false {
|
|
log.Panic("GetMappings() ", Column1.Type, " error: not found")
|
|
}
|
|
if SQLMapping1.GoType == "time.Time" {
|
|
Otvet = true
|
|
break
|
|
}
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_ID_Int64 - возвращает true если есть поле id типа int64
|
|
func Has_Column_ID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_ExtID_Int64 - возвращает true если есть поле ext_id типа int64
|
|
func Has_Column_ExtID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["ext_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_CreatedAt_Time - возвращает true если есть поле created_at
|
|
func Has_Column_CreatedAt_Time(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["created_at"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "time.Time" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_ModifiedAt_Time - возвращает true если есть поле modified_at
|
|
func Has_Column_ModifiedAt_Time(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["modified_at"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "time.Time" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_DeletedAt_Time - возвращает true если есть поле deleted_at
|
|
func Has_Column_DeletedAt_Time(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["deleted_at"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "time.Time" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_TableNameID_Int64 - возвращает true если есть поле table_name_id
|
|
func Has_Column_TableNameID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["table_name_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_TableRowID_Int64 - возвращает true если есть поле table_row_id
|
|
func Has_Column_TableRowID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["table_row_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_IsGroup_Bool - возвращает true если есть поле is_group
|
|
func Has_Column_IsGroup_Bool(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["is_group"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "bool" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_ParentID_Int64 - возвращает true если есть поле parent_id
|
|
func Has_Column_ParentID_Int64(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["parent_id"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "int64" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_Name_String - возвращает true если есть поле name
|
|
func Has_Column_Name_String(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["name"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "string" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Column_Description_String - возвращает true если есть поле description
|
|
func Has_Column_Description_String(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
//
|
|
Column1, ok := Table1.MapColumns["description"]
|
|
if ok == false {
|
|
return Otvet
|
|
}
|
|
|
|
//
|
|
if Column1.TypeGo != "string" {
|
|
return Otvet
|
|
}
|
|
|
|
Otvet = true
|
|
return Otvet
|
|
}
|
|
|
|
// ----
|
|
|
|
// Has_Columns_CommonStruct - возвращает true если есть все общие структуры
|
|
func Has_Columns_CommonStruct(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Has_Column_ExtID_Int64(Table1) && Has_Column_CreatedAt_Time(Table1) && Has_Column_ModifiedAt_Time(Table1) && Has_Column_DeletedAt_Time(Table1) && Has_Column_IsDeleted_Bool(Table1) && Has_Column_ID_Int64(Table1)
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Columns_NameStruct - возвращает true если есть колонки name + description
|
|
func Has_Columns_NameStruct(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Has_Column_Name_String(Table1) && Has_Column_Description_String(Table1)
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Columns_Groups - возвращает true если есть колонки is_group + parent_id
|
|
func Has_Columns_Groups(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Has_Column_IsGroup_Bool(Table1) && Has_Column_ParentID_Int64(Table1)
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Has_Columns_ExtLink - возвращает true если есть колонки table_name_id + table_row_id
|
|
func Has_Columns_ExtLink(Table1 *types.Table) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Has_Column_TableNameID_Int64(Table1) && Has_Column_TableRowID_Int64(Table1)
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// ----
|
|
|
|
// Is_Column_CommonStruct - возвращает true если это колонка ext_id, created_at, modified_at, deleted_at, id
|
|
func Is_Column_CommonStruct(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
ColumnName := Column1.Name
|
|
|
|
switch ColumnName {
|
|
case "ext_id", "created_at", "modified_at", "deleted_at", "is_deleted", "id":
|
|
Otvet = true
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_Column_NameStruct - возвращает true если это колонка name или description
|
|
func Is_Column_NameStruct(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
ColumnName := Column1.Name
|
|
|
|
switch ColumnName {
|
|
case "name", "description":
|
|
Otvet = true
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_Column_GroupsStruct - возвращает true если это колонка is_group, parent_id
|
|
func Is_Column_GroupsStruct(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
ColumnName := Column1.Name
|
|
|
|
switch ColumnName {
|
|
case "is_group", "parent_id":
|
|
Otvet = true
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_Column_ExtLinksStruct - возвращает true если это колонка table_name_id, table_row_id
|
|
func Is_Column_ExtLinksStruct(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
ColumnName := Column1.Name
|
|
|
|
switch ColumnName {
|
|
case "table_name_id", "table_row_id":
|
|
Otvet = true
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_Common_Сolumn - возвращает true если это общая колонка: table_name_id, table_row_id, is_group, parent_id, name или description, ext_id, created_at, modified_at, deleted_at, id
|
|
func Is_Common_Сolumn(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Is_Column_CommonStruct(Column1) || Is_Column_NameStruct(Column1) || Is_Column_GroupsStruct(Column1) || Is_Column_ExtLinksStruct(Column1)
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_NotNeedUpdate_Сolumn - возвращает true если не нужна функция UpdateColumnNAme(), например если это общая колонка: table_name_id, table_row_id, is_group, parent_id, ext_id, created_at, modified_at, deleted_at, id
|
|
func Is_NotNeedUpdate_Сolumn(Column1 *types.Column) bool {
|
|
Otvet := false
|
|
|
|
Otvet = Is_Column_CommonStruct(Column1) || Is_Column_GroupsStruct(Column1) //|| Is_Column_ExtLinksStruct(Column1)
|
|
|
|
if Is_Need_Сolumn(Column1) == false {
|
|
Otvet = true
|
|
}
|
|
|
|
return Otvet
|
|
}
|
|
|
|
// Is_Need_Сolumn - возвращает true если эта колонка не нужна
|
|
func Is_Need_Сolumn(Column1 *types.Column) bool {
|
|
Otvet := true
|
|
|
|
if strings.HasPrefix(Column1.Name, "DELETED_") == true {
|
|
Otvet = false
|
|
}
|
|
|
|
return Otvet
|
|
}
|