1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-07-16 02:54:19 +02:00

сделал PrintableString()

This commit is contained in:
Nikitin Aleksandr
2023-11-02 15:57:13 +03:00
parent 4640e5f302
commit 7ed0bdad5b
13 changed files with 282 additions and 47 deletions

View File

@ -156,10 +156,21 @@ func Test_server_LawsuitStatusType_FindByExtID(t *testing.T) {
config.LoadEnv()
crud_starter.InitCrudTransport_DB()
ctx := context.Background()
Request := grpc_proto.RequestId{}
Request.Id = LawsuitStatusType_ID_Test
Request.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
server1 := &ServerGRPC{}
Otvet1, err := server1.LawsuitStatusType_Read(ctx, &Request)
if err != nil {
t.Error("Test_server_LawsuitStatusType_FindByExtId() error: ", err)
}
ctx := context.Background()
Request := grpc_proto.RequestExtId{}
Request.ExtId = 1
Request.ConnectionId = 3
Request.ExtId = Otvet1.ExtID
Request.ConnectionId = Otvet1.ConnectionId
Request.VersionModel = lawsuit_status_types.LawsuitStatusType{}.GetStructVersion()
server1 := &ServerGRPC{}

View File

@ -156,6 +156,11 @@ func (crud Crud_DB) create_update_ctx(ctx context.Context, m *lawsuit_status_typ
MassOmit = append(MassOmit, ColumnName)
}
ColumnName = "CreatedAt"
if m.CreatedAt.IsZero() == true {
MassOmit = append(MassOmit, ColumnName)
}
ColumnName = "ExtID"
if m.ExtID == 0 {
MassOmit = append(MassOmit, ColumnName)

View File

@ -23,10 +23,10 @@ func TestRead(t *testing.T) {
t.Error("TestRead() error: ", err)
}
if Otvet.Name == "" {
t.Error(TableName + "_test.TestRead() error name= '' ")
if Otvet.ID == 0 {
t.Error(TableName + "_test.TestRead() error ID=0 ")
} else {
t.Log(TableName+"_test.TestRead() Otvet: ", Otvet.Name)
t.Log(TableName+"_test.TestRead() Otvet: ", Otvet.ID)
}
}
@ -44,15 +44,15 @@ func TestSave(t *testing.T) {
t.Error("TestSave() error: ", err)
}
if Otvet.Name == "" {
t.Error(TableName + "_test.TestSave() error name= '' ")
if Otvet.ID == 0 {
t.Error(TableName + "_test.TestSave() error ID=0 ")
}
err = crud.Save(&Otvet)
if err != nil {
t.Error("TestSave() error: ", err)
}
t.Log(TableName+"_test.TestSave() Otvet: ", Otvet.Name)
t.Log(TableName+"_test.TestSave() Otvet: ", Otvet.ID)
}
@ -101,7 +101,15 @@ func TestFind_ByExtID(t *testing.T) {
postgres_gorm.Connect()
defer postgres_gorm.CloseConnection()
Otvet, err := Find_ByExtID(1, constants.CONNECTION_ID_TEST)
crud := Crud_DB{}
Otvet := lawsuit_status_types.LawsuitStatusType{}
Otvet.ID = Postgres_ID_Test
err := crud.Read(&Otvet)
if err != nil {
t.Error("TestFind_ByExtID() error: ", err)
}
Otvet, err = Find_ByExtID(Otvet.ExtID, Otvet.ConnectionID)
if err != nil {
t.Error("TestFind_ByExtID() error: ", err)
}

View File

@ -157,9 +157,17 @@ func TestFindByExtID(t *testing.T) {
defer grpc_client.CloseConnection()
crud := Crud_GRPC{}
Otvet1 := lawsuit_status_types.LawsuitStatusType{}
Otvet1.ID = Postgres_ID_Test
err := crud.Read(&Otvet1)
if err != nil {
t.Error("TestFind_ByExtID() error: ", err)
}
Otvet := lawsuit_status_types.LawsuitStatusType{}
Otvet.ExtID = 1
Otvet.ConnectionID = constants.CONNECTION_ID_TEST
Otvet.ExtID = Otvet1.ExtID
Otvet.ConnectionID = Otvet1.ConnectionID
err := crud.Find_ByExtID(&Otvet)
if err != nil {

View File

@ -157,9 +157,17 @@ func TestFindByExtID(t *testing.T) {
defer nrpc_client.CloseConnection()
crud := Crud_NRPC{}
Otvet1 := lawsuit_status_types.LawsuitStatusType{}
Otvet1.ID = Postgres_ID_Test
err := crud.Read(&Otvet1)
if err != nil {
t.Error("TestFind_ByExtID() error: ", err)
}
Otvet := lawsuit_status_types.LawsuitStatusType{}
Otvet.ExtID = 1
Otvet.ConnectionID = constants.CONNECTION_ID_TEST
Otvet.ExtID = Otvet1.ExtID
Otvet.ConnectionID = Otvet1.ConnectionID
err := crud.Find_ByExtID(&Otvet)
if err != nil {

View File

@ -1,9 +1,13 @@
package create_files
import (
"errors"
"fmt"
"github.com/ManyakRus/crud_generator/internal/mini_func"
"github.com/ManyakRus/crud_generator/internal/types"
"github.com/iancoleman/strcase"
"github.com/jinzhu/inflection"
"strconv"
"strings"
)
@ -32,16 +36,18 @@ func FormatName(Name string) string {
switch strings.ToLower(Name) {
case "id":
Otvet = "ID"
default:
Otvet = strcase.ToCamel(Otvet)
return Otvet
}
Otvet = strcase.ToCamel(Otvet)
//_id в конце заменяем на ID
len1 := len(Name)
if len1 >= 3 {
last3 := strings.ToLower(Name[len1-3:])
lenName := len(Name)
lenOtvet := len(Otvet)
if lenName >= 3 {
last3 := strings.ToLower(Name[lenName-3:])
if last3 == "_id" {
Otvet = Otvet[:len1-2-1] + "ID"
Otvet = Otvet[:lenOtvet-2] + "ID"
}
}
@ -124,3 +130,113 @@ func Has_Column_IsDeleted(Table1 *types.Table) bool {
Otvet = true
return Otvet
}
// DeleteCommentFromFuncName - удаляет комментарий с названием функции
func DeleteCommentFromFuncName(Text, FuncName string) string {
Otvet := Text
TextFind := "//" + FuncName + "()"
Otvet = strings.ReplaceAll(Otvet, TextFind, "")
//pos1 := strings.Index(Otvet, TextFind)
//if pos1 < 0 {
// return Otvet
//}
//s2 := Otvet[pos1+1:]
//
//posEnd := strings.Index(s2, "\n}")
//if posEnd < 0 {
// return Otvet
//}
//
//Otvet = Otvet[:pos1-1] + Otvet[pos1+posEnd+3:]
return Otvet
}
// DeleteLineWithComment - удаляет текст от комментария до конца строки
func DeleteLineWithComment(Text, FuncName string) string {
Otvet := Text
TextFind := "//" + FuncName + "()"
pos1 := strings.Index(Otvet, TextFind)
if pos1 < 0 {
return Otvet
}
s2 := Otvet[pos1:]
posEnd := strings.Index(s2, "\n")
if posEnd < 0 {
return Otvet
}
Otvet = Otvet[:pos1-1] + Otvet[pos1+posEnd+1:]
return Otvet
}
// FindPrimaryKeyNameTypeGo - возвращает наименование колонки PrimaryKey
func FindPrimaryKeyNameTypeGo(Table1 *types.Table) (string, string) {
Otvet := ""
Type := ""
for _, Column1 := range Table1.MapColumns {
if Column1.IsIdentity == true {
return Column1.NameGo, Column1.TypeGo
}
}
return Otvet, Type
}
// ReplacePrimaryKeyID - заменяет "ID" на название колонки PrimaryKey
func ReplacePrimaryKeyID(Text string, Table1 *types.Table) string {
Otvet := Text
ColumnName, ColumnTypeGo := FindPrimaryKeyNameTypeGo(Table1)
if mini_func.IsNumberType(ColumnTypeGo) == true {
Otvet = strings.ReplaceAll(Otvet, "Otvet.ID", "Otvet."+ColumnName)
} else if ColumnTypeGo == "string" {
Otvet = strings.ReplaceAll(Otvet, "Otvet.ID == 0", "Otvet."+ColumnName+" == \"\"")
Otvet = strings.ReplaceAll(Otvet, "Otvet.ID", "Otvet."+ColumnName)
}
return Otvet
}
// AddSkipNow - добавляет строку t.SkipNow()
func AddSkipNow(Text string, Table1 *types.Table) string {
Otvet := Text
if Table1.IDMinimum == "" || Table1.IDMinimum == "0" {
TextFind := "(t *testing.T) {"
Otvet = strings.ReplaceAll(Otvet, TextFind, TextFind+"\n\tt.SkipNow() //now rows in DB\n")
}
return Otvet
}
// CheckGoodTable - возвращает ошибку если таблица неправильная
func CheckGoodTable(Table1 *types.Table) error {
var err error
ColumnName, _ := FindPrimaryKeyNameTypeGo(Table1)
if ColumnName == "" {
TextError := fmt.Sprint("Wrong table ", Table1.Name, " error: not found Primary key")
err = errors.New(TextError)
}
return err
}
// PrintableString - возвращает строку без запрещённых символов
func PrintableString(s string) string {
Otvet := s
Otvet = strconv.Quote(Otvet) //экранирование символов
len1 := len(Otvet)
if len1 > 0 {
Otvet = Otvet[1 : len1-1]
}
return Otvet
}

View File

@ -10,9 +10,33 @@ func TestFindSingularName(t *testing.T) {
}
func TestFormatName(t *testing.T) {
Name := "contract_id"
Name := "document_invoice_id"
Otvet := FormatName(Name)
if Otvet == "" {
t.Error("TestFormatName() error")
}
}
func TestDeleteLineWithComment(t *testing.T) {
s := `import (
"gitlab.aescorp.ru/dsp_dev/claim/nikitin/config"
"gitlab.aescorp.ru/dsp_dev/claim/nikitin/postgres_gorm"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/object_model/entities/lawsuit_status_types"
"testing"
//TestFind_ByExtID() "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
)
`
Otvet := DeleteLineWithComment(s, "TestFind_ByExtID")
if Otvet == "" {
t.Error("TestFormatName() error")
}
}
func TestPrintableString(t *testing.T) {
s := `123 // \\ 456
789`
Otvet := PrintableString(s)
if Otvet == "" {
t.Error("TestPrintableString() error: Otvet = ''")
}
}

View File

@ -16,18 +16,25 @@ import (
func CreateAllFiles(MapAll map[string]*types.Table) error {
var err error
for _, table1 := range MapAll {
for _, Table1 := range MapAll {
//проверка что таблица нормальная
err1 := create_files.CheckGoodTable(Table1)
if err1 != nil {
log.Warn(err1)
continue
}
//файлы db
err = CreateFiles(table1)
err = CreateFiles(Table1)
if err != nil {
log.Error("CreateFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateFiles() table: ", Table1.Name, " error: ", err)
return err
}
//тестовые файлы db
err = CreateTestFiles(table1)
err = CreateTestFiles(Table1)
if err != nil {
log.Error("CreateTestFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateTestFiles() table: ", Table1.Name, " error: ", err)
return err
}
}
@ -132,12 +139,18 @@ func CreateTestFiles(Table1 *types.Table) error {
}
TextDB = DeleteFuncTestFind_byExtID(TextDB, Table1)
//ID Minimum
//Postgres_ID_Test = ID Minimum
if Table1.IDMinimum != "" {
TextFind := "const Postgres_ID_Test = "
TextDB = strings.ReplaceAll(TextDB, TextFind+"1", TextFind+Table1.IDMinimum)
}
//SkipNow()
TextDB = create_files.AddSkipNow(TextDB, Table1)
// замена ID на PrimaryKey
TextDB = create_files.ReplacePrimaryKeyID(TextDB, Table1)
//запись файла
err = os.WriteFile(FilenameReadyDB, []byte(TextDB), constants.FILE_PERMISSIONS)
@ -264,14 +277,18 @@ func DeleteFuncTestRestore(Text string, Table1 *types.Table) string {
func DeleteFuncTestFind_byExtID(Text string, Table1 *types.Table) string {
Otvet := Text
FuncName := "TestFind_ByExtID"
//если есть обе колонки - ничего не делаем
ok := create_files.Has_Column_ExtID_ConnectionID(Table1)
if ok == true {
Otvet = create_files.DeleteCommentFromFuncName(Otvet, FuncName)
return Otvet
}
//
Otvet = create_files.DeleteFuncFromFuncName(Otvet, "TestFind_ByExtID")
Otvet = create_files.DeleteFuncFromFuncName(Otvet, FuncName)
//Otvet = create_files.DeleteLineWithComment(Otvet, FuncName)
return Otvet
}

View File

@ -15,18 +15,25 @@ import (
func CreateAllFiles(MapAll map[string]*types.Table) error {
var err error
for _, table1 := range MapAll {
for _, Table1 := range MapAll {
//проверка что таблица нормальная
err1 := create_files.CheckGoodTable(Table1)
if err1 != nil {
log.Warn(err1)
continue
}
//файлы grpc_client
err = CreateFiles(table1)
err = CreateFiles(Table1)
if err != nil {
log.Error("CreateFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateFiles() table: ", Table1.Name, " error: ", err)
return err
}
//тестовые файлы grpc_client
err = CreateTestFiles(table1)
err = CreateTestFiles(Table1)
if err != nil {
log.Error("CreateTestFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateTestFiles() table: ", Table1.Name, " error: ", err)
return err
}
}
@ -128,6 +135,12 @@ func CreateTestFiles(Table1 *types.Table) error {
}
TextDB = DeleteFuncTestFind_byExtID(TextDB, ModelName, Table1)
// замена ID на PrimaryKey
TextDB = create_files.ReplacePrimaryKeyID(TextDB, Table1)
//SkipNow()
TextDB = create_files.AddSkipNow(TextDB, Table1)
//запись файла
err = os.WriteFile(FilenameReadyGRPCClient, []byte(TextDB), constants.FILE_PERMISSIONS)

View File

@ -15,18 +15,25 @@ import (
func CreateAllFiles(MapAll map[string]*types.Table) error {
var err error
for _, table1 := range MapAll {
for _, Table1 := range MapAll {
//проверка что таблица нормальная
err1 := create_files.CheckGoodTable(Table1)
if err1 != nil {
log.Warn(err1)
continue
}
//файлы grpc_server
err = CreateFiles(table1)
err = CreateFiles(Table1)
if err != nil {
log.Error("CreateFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateFiles() table: ", Table1.Name, " error: ", err)
return err
}
//тестовые файлы grpc_server
err = CreateTestFiles(table1)
err = CreateTestFiles(Table1)
if err != nil {
log.Error("CreateTestFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateTestFiles() table: ", Table1.Name, " error: ", err)
return err
}
}
@ -110,6 +117,12 @@ func CreateTestFiles(Table1 *types.Table) error {
}
TextDB = DeleteFuncTestFind_byExtID(TextDB, ModelName, Table1)
// замена ID на PrimaryKey
TextDB = create_files.ReplacePrimaryKeyID(TextDB, Table1)
//SkipNow()
TextDB = create_files.AddSkipNow(TextDB, Table1)
//запись файла
err = os.WriteFile(FilenameReadyGRPCServer, []byte(TextDB), constants.FILE_PERMISSIONS)

View File

@ -10,7 +10,6 @@ import (
"github.com/ManyakRus/starter/micro"
"os"
"sort"
"strconv"
"strings"
)
@ -141,7 +140,7 @@ func FindTextColumn(Column1 *types.Column) string {
TextDefaultValue := FindTextDefaultValue(Type_go)
TextPrimaryKey := FindTextPrimaryKey(Column1.IsIdentity)
Description := Column1.Description
Description = strconv.Quote(Description) //экранирование символов
Description = create_files.PrintableString(Description) //экранирование символов
Otvet = Otvet + "\t" + ColumnModelName + " " + Type_go + "\t"
Otvet = Otvet + "`json:\"" + ColumnName + "\""

View File

@ -15,18 +15,25 @@ import (
func CreateAllFiles(MapAll map[string]*types.Table) error {
var err error
for _, table1 := range MapAll {
for _, Table1 := range MapAll {
//проверка что таблица нормальная
err1 := create_files.CheckGoodTable(Table1)
if err1 != nil {
log.Warn(err1)
continue
}
//файлы nrpc_client
err = CreateFiles(table1)
err = CreateFiles(Table1)
if err != nil {
log.Error("CreateFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateFiles() table: ", Table1.Name, " error: ", err)
return err
}
//тестовые файлы nrpc_client
err = CreateTestFiles(table1)
err = CreateTestFiles(Table1)
if err != nil {
log.Error("CreateTestFiles() table: ", table1.Name, " error: ", err)
log.Error("CreateTestFiles() table: ", Table1.Name, " error: ", err)
return err
}
}
@ -128,6 +135,12 @@ func CreateTestFiles(Table1 *types.Table) error {
}
TextDB = DeleteFuncTestFind_byExtID(TextDB, ModelName, Table1)
// замена ID на PrimaryKey
TextDB = create_files.ReplacePrimaryKeyID(TextDB, Table1)
//SkipNow()
TextDB = create_files.AddSkipNow(TextDB, Table1)
//запись файла
err = os.WriteFile(FilenameReadyNRPCClient, []byte(TextDB), constants.FILE_PERMISSIONS)

View File

@ -56,7 +56,7 @@ on
WHERE 1=1
--and c.confrelid = (select oid from pg_class where relname = 'debt_types')
AND c.confrelid!=c.conrelid
--AND c.confrelid!=c.conrelid
;
------------------------------------------- Все таблицы и колонки ------------------------------