1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-11-24 08:22:42 +02:00

сделал name_replace.json

This commit is contained in:
Nikitin Aleksandr 2023-10-27 11:43:15 +03:00
parent b8eb2ad0ab
commit 2266b2f578
11 changed files with 190 additions and 21 deletions

View File

@ -0,0 +1,11 @@
{
"inn": "INN",
"kpp": "KPP",
"okpo": "OKPO",
"ogrn": "OGRN",
"okato": "OKATO",
"nsi_flat": "NSIFlat",
"nsi_flat_id": "NSIFlatID",
"nsi_id": "NSIID",
"www": "WWW"
}

View File

@ -24,6 +24,11 @@ func FindSingularName(s string) string {
func FormatName(Name string) string {
Otvet := Name
Otvet1, ok := types.MapReplaceName[Name]
if ok == true {
return Otvet1
}
switch strings.ToLower(Name) {
case "id":
Otvet = "ID"
@ -31,16 +36,12 @@ func FormatName(Name string) string {
Otvet = strcase.ToCamel(Otvet)
}
return Otvet
}
func IsNumberType(TypeGo string) bool {
Otvet := false
switch TypeGo {
case "int", "int8", "int16", "int32", "int64", "float32", "float64", "uint", "uint8", "uint16", "uint32", "uint64", "byte":
{
Otvet = true
//_id в конце заменяем на ID
len1 := len(Name)
if len1 >= 3 {
last3 := strings.ToLower(Name[len1-3:])
if last3 == "_id" {
Otvet = Otvet[:len1-2-1] + "ID"
}
}

View File

@ -8,3 +8,11 @@ func TestFindSingularName(t *testing.T) {
t.Error("TestFindSingularName() error: Otvet =''")
}
}
func TestFormatName(t *testing.T) {
Name := "contract_id"
Otvet := FormatName(Name)
if Otvet == "" {
t.Error("TestFormatName() error")
}
}

View File

@ -4,6 +4,7 @@ import (
"github.com/ManyakRus/crud_generator/internal/config"
"github.com/ManyakRus/crud_generator/internal/constants"
"github.com/ManyakRus/crud_generator/internal/create_files"
"github.com/ManyakRus/crud_generator/internal/mini_func"
"github.com/ManyakRus/crud_generator/internal/types"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/micro"
@ -130,6 +131,12 @@ func CreateTestFiles(Table1 *types.Table) error {
}
TextDB = DeleteFuncTestFind_byExtID(TextDB, Table1)
//ID Minimum
if Table1.IDMinimum != "" {
TextFind := "const Postgres_ID_Test = "
TextDB = strings.ReplaceAll(TextDB, TextFind+"1", TextFind+Table1.IDMinimum)
}
//запись файла
err = os.WriteFile(FilenameReadyDB, []byte(TextDB), constants.FILE_PERMISSIONS)
@ -300,7 +307,7 @@ func AddTextOmit(TextDB string, Table1 *types.Table) string {
}
`
} else if create_files.IsNumberType(TypeGo) == true && Column1.TableKey != "" {
} else if mini_func.IsNumberType(TypeGo) == true && Column1.TableKey != "" {
TextFind := `if m.` + ColumnNameGo + ` == 0 {`
pos1 := strings.Index(TextDB, TextFind)
if pos1 >= 0 {

View File

@ -120,11 +120,12 @@ func FindTextColumn(Column1 *types.Column) string {
ColumnName := Column1.Name
ColumnModelName := create_files.FormatName(Column1.Name)
Column1.NameGo = ColumnModelName
SQLMapping1, ok := dbmeta.GetMappings()[Column1.Type]
if ok == false {
log.Panic("GetMappings() ", Column1.Type, " error: not found")
}
Type_go := SQLMapping1.GoType
//SQLMapping1, ok := dbmeta.GetMappings()[Column1.Type]
//if ok == false {
// log.Panic("GetMappings() ", Column1.Type, " error: not found")
//}
//Type_go := SQLMapping1.GoType
Type_go := Column1.TypeGo
Column1.TypeGo = Type_go
TextDefaultValue := FindTextDefaultValue(Type_go)
TextPrimaryKey := FindTextPrimaryKey(Column1.IsIdentity)

View File

@ -1,18 +1,50 @@
package load_configs
import (
"encoding/json"
"fmt"
"github.com/ManyakRus/crud_generator/internal/config"
"github.com/ManyakRus/crud_generator/internal/types"
"github.com/ManyakRus/crud_generator/pkg/dbmeta"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/micro"
"os"
)
// LoadMappingsAll - загружает маппинг ТипБД = ТипGolang, из файла .json
func LoadMappingsAll() {
func LoadConfigsAll() {
LoadMappings()
LoadNameReplace()
}
// LoadMappings - загружает маппинг ТипБД = ТипGolang, из файла .json
func LoadMappings() {
dir := micro.ProgramDir_bin()
Filename := dir + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile() + "configs" + micro.SeparatorFile() + "mapping.json"
err := dbmeta.LoadMappings(Filename, false)
FileName := dir + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile() + "configs" + micro.SeparatorFile() + "mapping.json"
err := dbmeta.LoadMappings(FileName, false)
if err != nil {
log.Panic("LoadMappings() error: ", err)
}
}
// LoadNameReplace - загружает маппинг ТипБД = ТипGolang, из файла .json
func LoadNameReplace() {
dir := micro.ProgramDir_bin()
FileName := dir + config.Settings.TEMPLATE_FOLDERNAME + micro.SeparatorFile() + "configs" + micro.SeparatorFile() + "name_replace.json"
var err error
//чтение файла
bytes, err := os.ReadFile(FileName)
if err != nil {
TextError := fmt.Sprint("ReadFile() error: ", err)
log.Panic(TextError)
}
//json в map
//var MapServiceURL2 = make(map[string]string)
err = json.Unmarshal(bytes, &types.MapReplaceName)
if err != nil {
log.Panic("Unmarshal() error: ", err)
}
}

View File

@ -20,7 +20,7 @@ func StartApp() {
config.FillSettings()
config.FillFlags()
load_configs.LoadMappingsAll()
load_configs.LoadConfigsAll()
postgres_gorm.StartDB()
postgres_gorm.GetConnection().Logger.LogMode(1)

View File

@ -0,0 +1,14 @@
package mini_func
func IsNumberType(TypeGo string) bool {
Otvet := false
switch TypeGo {
case "int", "int8", "int16", "int32", "int64", "float32", "float64", "uint", "uint8", "uint16", "uint32", "uint64", "byte":
{
Otvet = true
}
}
return Otvet
}

View File

@ -0,0 +1 @@
package mini_func

View File

@ -2,10 +2,13 @@ package postgres
import (
"context"
"database/sql"
"errors"
"fmt"
"github.com/ManyakRus/crud_generator/internal/config"
"github.com/ManyakRus/crud_generator/internal/mini_func"
"github.com/ManyakRus/crud_generator/internal/types"
"github.com/ManyakRus/crud_generator/pkg/dbmeta"
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/postgres_gorm"
@ -201,6 +204,16 @@ order by
Column1 := types.Column{}
Column1.Name = v.ColumnName
Column1.Type = v.ColumnType
//Type_go
SQLMapping1, ok := dbmeta.GetMappings()[Column1.Type]
if ok == false {
log.Panic("GetMappings() ", Column1.Type, " error: not found")
}
Type_go := SQLMapping1.GoType
Column1.TypeGo = Type_go
//
if v.ColumnIsIdentity == "YES" {
Column1.IsIdentity = true
}
@ -218,11 +231,17 @@ order by
OrderNumberColumn++
TableName0 = v.TableName
}
//
if Table1.Name != "" {
Table1.MapColumns = MapColumns
MapTable[TableName0] = Table1
}
//FillTypeGo(MapTable)
FillIDMinimum(MapTable)
return MapTable, err
}
@ -232,3 +251,75 @@ func CreateTable() *types.Table {
return Otvet
}
func FillIDMinimum(MapTable map[string]*types.Table) {
var err error
//соединение
db := postgres_gorm.GetConnection()
ctxMain := contextmain.GetContext()
for TableName, Table1 := range MapTable {
//текст запроса
NameID, TypeGo := FindNameTypeID(Table1)
if NameID == "" {
continue
}
TextSQL := "SELECT Min(" + NameID + ") from \"" + postgres_gorm.Settings.DB_SCHEMA + "\".\"" + TableName + "\""
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*60)
defer ctxCancelFunc()
db.WithContext(ctx)
//запрос
tx := db.Raw(TextSQL)
err = tx.Error
if err != nil {
log.Panic("Wrong SQL query: ", TextSQL, " error: ", err)
}
var IDMinimum sql.NullString
tx = tx.Scan(&IDMinimum)
err = tx.Error
if err != nil {
log.Panic("Wrong SQL Scan(): ", TextSQL, " error: ", err)
}
//
if TypeGo == "string" {
Table1.IDMinimum = `"` + IDMinimum.String + `"`
} else if mini_func.IsNumberType(TypeGo) == true {
Table1.IDMinimum = IDMinimum.String
}
}
}
func FindNameTypeID(Table1 *types.Table) (string, string) {
Otvet := ""
Type := ""
for ColumnName, Column1 := range Table1.MapColumns {
if Column1.IsIdentity == true {
return ColumnName, Column1.TypeGo
}
}
return Otvet, Type
}
//// FillTypeGo - заполняет тип golang из типа postgres
//func FillTypeGo(MapTable map[string]*types.Table) {
//
// for _, Table1 := range MapTable {
// for _, Column1 := range Table1.MapColumns {
//
// SQLMapping1, ok := dbmeta.GetMappings()[Column1.Type]
// if ok == false {
// log.Panic("GetMappings() ", Column1.Type, " error: not found")
// }
// Type_go := SQLMapping1.GoType
// Column1.TypeGo = Type_go
// }
// }
//
//}

View File

@ -20,4 +20,7 @@ type Table struct {
//Columns []Column
OrderNumber int
NameGo string
IDMinimum string
}
var MapReplaceName = make(map[string]string, 0)