1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-02-03 09:57:21 +02:00

сделал sync_service без ошибок

This commit is contained in:
Nikitin Aleksandr 2024-06-21 13:49:09 +03:00
parent 3d8b118b23
commit 83eeb4c95b
6 changed files with 132 additions and 32 deletions

View File

@ -37,7 +37,7 @@ func (s *ServerGRPC) LawsuitStatusType_ReadFromCache(ctx context.Context, Reques
db := postgres_gorm.GetConnection()
ID := Request.ID
Model := lawsuit_status_types.LawsuitStatusType{}
Model, err = crud_lawsuit_status_types.ReadFromCache_ctx(ctx, db, ID)
Model, err = crud_lawsuit_status_types.ReadFromCache_ctx(ctx, db, ReplaceManyID(ID))
if err != nil {
return &Otvet, err
}

View File

@ -44,14 +44,12 @@ func Read_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitS
return err
}
id := m.ColumnNamePK
db.WithContext(ctx)
tx := db.First(m)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Read() id: %v, error: %v", id, err)
err = fmt.Errorf(m.TableNameDB()+" Read() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -103,7 +101,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
// проверка ID
if int64(m.ID) == 0 {
TextError := fmt.Sprint(m.TableNameDB()+" Update() ", TableName, " error: id =0")
TextError := fmt.Sprint(m.TableNameDB()+" Update() ", TableName, " error: ColumnNamePK =0")
err = errors.New(TextError)
return err
}
@ -134,7 +132,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
// проверка ID
if int64(m.ID) != 0 {
TextError := fmt.Sprint(m.TableNameDB()+" Save() ", TableName, " error: id !=0")
TextError := fmt.Sprint(m.TableNameDB()+" Save() ", TableName, " error: ColumnNamePK !=0")
err = errors.New(TextError)
return err
}
@ -208,7 +206,7 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
tx = tx.Updates(MapOmit)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Create_Update() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -249,7 +247,7 @@ func Restore_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsu
err = Save_ctx(ctx, db, &m2)
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Restore() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Restore() ColumnNamePK: %v, error: %v", ColumnNamePK, err)
}
return err
@ -295,7 +293,7 @@ func Find_ByExtID_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.
tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Find_ByExtID() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Find_ByExtID() ExtID: %v, ConnectionID: %v, error: %v", m.ExtID, m.ConnectionID, err)
}
return err
@ -331,7 +329,7 @@ func Delete_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
tx := db.Delete(m)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Delete() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Delete() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err

View File

@ -44,14 +44,12 @@ func Read_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.LawsuitS
return err
}
id := m.ColumnNamePK
db.WithContext(ctx)
tx := db.First(m)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Read() id: %v, error: %v", id, err)
err = fmt.Errorf(m.TableNameDB()+" Read() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -103,7 +101,7 @@ func Update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
// проверка ID
if int64(m.ID) == 0 {
TextError := fmt.Sprint(m.TableNameDB()+" Update() ", TableName, " error: id =0")
TextError := fmt.Sprint(m.TableNameDB()+" Update() ", TableName, " error: ColumnNamePK =0")
err = errors.New(TextError)
return err
}
@ -134,7 +132,7 @@ func Create_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
// проверка ID
if int64(m.ID) != 0 {
TextError := fmt.Sprint(m.TableNameDB()+" Create() ", TableName, " error: id !=0")
TextError := fmt.Sprint(m.TableNameDB()+" Create() ", TableName, " error: ColumnNamePK !=0")
err = errors.New(TextError)
return err
}
@ -208,7 +206,7 @@ func create_update_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types
tx = tx.Updates(MapOmit)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Create_Update() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Create_Update() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -249,7 +247,7 @@ func Delete_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsui
err = Save_ctx(ctx, db, &m2)
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Delete() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Delete() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -290,7 +288,7 @@ func Restore_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.Lawsu
err = Save_ctx(ctx, db, &m2)
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Restore() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Restore() ColumnNamePK: %v, error: %v", m.ColumnNamePK, err)
}
return err
@ -301,7 +299,7 @@ func (crud Crud_DB) Find_ByExtID(m *lawsuit_status_types.LawsuitStatusType) erro
var err error
if m.ExtID == 0 {
err = errors.New(m.TableNameDB()+" Find_ByExtID() error: ext_id =0")
err = errors.New(m.TableNameDB()+" Find_ByExtID() error: ExtID =0")
return err
}
@ -336,7 +334,7 @@ func Find_ByExtID_ctx(ctx context.Context, db *gorm.DB, m *lawsuit_status_types.
tx := db.Where("ext_id = ?", m.ExtID).Where("connection_id = ?", m.ConnectionID).First(m)
err = tx.Error
if err != nil {
err = fmt.Errorf(m.TableNameDB()+" Find_ByExtID() id: %v, error: %v", int64(m.ID), err)
err = fmt.Errorf(m.TableNameDB()+" Find_ByExtID() ExtID: %v, ConnectionID: %v, error: %v", m.ExtID, m.ConnectionID, err)
}
return err

View File

@ -249,12 +249,12 @@ func FindPrimaryKeyColumns(Table1 *types.Table) []*types.Column {
func ReplacePrimaryKeyOtvetID(Text string, Table1 *types.Table) string {
Otvet := Text
PrimaryKeyCount := Table1.PrimaryKeyColumnsCount
if PrimaryKeyCount == 1 {
Otvet = ReplacePrimaryKeyOtvetID1(Otvet, Table1)
} else {
Otvet = ReplacePrimaryKeyOtvetID_Many(Otvet, Table1)
}
//PrimaryKeyCount := Table1.PrimaryKeyColumnsCount
//if PrimaryKeyCount == 1 {
// Otvet = ReplacePrimaryKeyOtvetID1(Otvet, Table1)
//} else {
Otvet = ReplacePrimaryKeyOtvetID_Many(Otvet, Table1)
//}
return Otvet
}
@ -318,6 +318,15 @@ func ReplacePrimaryKeyOtvetID1(Text string, Table1 *types.Table) string {
Otvet = strings.ReplaceAll(Otvet, "\tID := Request.ID\n", TextNew)
}
Value, GolangCode = ConvertProtobufTypeToGolangAlias(Table1, ColumnPK, "Request.")
if GolangCode == "" {
TextNew := "\t" + ColumnPK.NameGo + " := " + Value + "\n"
Otvet = strings.ReplaceAll(Otvet, "\tID := AliasFromProto(Request.ID)\n", TextNew)
} else {
TextNew := "\t" + GolangCode + "\n"
Otvet = strings.ReplaceAll(Otvet, "\tID := AliasFromProto(Request.ID)\n", TextNew)
}
return Otvet
}
@ -327,6 +336,7 @@ func ReplacePrimaryKeyOtvetID_Many(Text string, Table1 *types.Table) string {
Otvet = ReplacePrimaryKeyOtvetID_ManyPK1(Otvet, Table1, "Otvet")
Otvet = ReplacePrimaryKeyOtvetID_ManyPK1(Otvet, Table1, "Request")
Otvet = ReplacePrimaryKeyOtvetID_ManyPK1(Otvet, Table1, "m")
Otvet = ReplacePrimaryKeyOtvetID1(Otvet, Table1) //для тестов
@ -344,6 +354,7 @@ func ReplacePrimaryKeyOtvetID_ManyPK1(Text string, Table1 *types.Table, Variable
}
sort.Strings(keys)
TextOtvetIDAliasID := ""
TextIfMId := ""
TextIfMIdNot0 := ""
TextM2ID := ""
@ -380,10 +391,13 @@ func ReplacePrimaryKeyOtvetID_ManyPK1(Text string, Table1 *types.Table, Variable
TextIfMIdNot0 = TextIfMIdNot0 + TextOR + "m." + Column1.NameGo + " != " + DefaultValue
TextMID0 = TextMID0 + TextOR + " (" + VariableName + "." + Column1.NameGo + " == " + DefaultValue + ")"
TextAlias := ConvertIDToAlias(Table1, Column1, Column1.NameGo)
TextOtvetIDAliasID = TextOtvetIDAliasID + "\t" + VariableName + "." + Column1.NameGo + " = " + TextAlias + "\n"
TextOR = " || "
}
Otvet = strings.ReplaceAll(Otvet, "\t"+VariableName+".ID = AliasFromInt(ID)", TextOtvetIDID)
Otvet = strings.ReplaceAll(Otvet, "\t"+VariableName+".ID = AliasFromInt(ID)", TextOtvetIDAliasID)
//Otvet = strings.ReplaceAll(Otvet, "\t"+VariableName+".ID = AliasFromInt(ID)", TextOtvetIDID)
Otvet = strings.ReplaceAll(Otvet, "\t"+VariableName+".ID = ProtoFromInt(m.ID)", TextRequestIDmID)
Otvet = strings.ReplaceAll(Otvet, "\t"+VariableName+".ID = int64(ID)", TextRequestIDInt64ID)
Otvet = strings.ReplaceAll(Otvet, "\tOtvet.ID = "+VariableName+".ID\n", TextOtvetIDmID)
@ -1792,8 +1806,8 @@ func ConvertRequestIdToAlias(Text string, Table1 *types.Table) string {
return Otvet
}
// ConvertIDToAlias_OtvetID - заменяет "Otvet.ID = ID" на "Otvet.ID = alias.Name(ID)"
func ConvertIDToAlias_OtvetID(Text string, Table1 *types.Table) string {
// ReplaceIDToAlias_OtvetID - заменяет "Otvet.ID = ID" на "Otvet.ID = alias.Name(ID)"
func ReplaceIDToAlias_OtvetID(Text string, Table1 *types.Table) string {
Otvet := Text
TableName := Table1.Name
@ -1822,6 +1836,25 @@ func ConvertIDToAlias_OtvetID(Text string, Table1 *types.Table) string {
return Otvet
}
// ConvertIDToAlias - заменяет "ID" на "alias.Name(ID)"
func ConvertIDToAlias(Table1 *types.Table, Column1 *types.Column, VariableName string) string {
Otvet := VariableName
TableName := Table1.Name
TextConvert, ok := types.MapConvertID[TableName+"."+Column1.Name]
if ok == false {
return Otvet
}
if TextConvert[:6] != "alias." {
return Otvet
}
Otvet = TextConvert + "(" + VariableName + ")"
return Otvet
}
// ConvertColumnToAlias - заменяет "Otvet.ID = ID" на "Otvet.ID = alias.Name(ID)"
func ConvertColumnToAlias(Table1 *types.Table, Column1 *types.Column, VariableName string) string {
Otvet := ""
@ -1928,6 +1961,44 @@ func ConvertProtobufTypeToGolangType(Table1 *types.Table, Column1 *types.Column,
VariableColumn = VariableName + RequestColumnName
//GolangCode := ""
//TableName := Table1.Name
//IDName := Column1.Name
//alias в Int64
//TextConvert, ok := types.MapConvertID[TableName+"."+IDName]
//if ok == true {
// VariableColumn = TextConvert + "(" + VariableName + RequestColumnName + ")"
// return VariableColumn, GolangCode
//}
//time.Time в timestamppb
switch Column1.TypeGo {
case "time.Time":
{
VariableColumn = VariableName + RequestColumnName + ".AsTime()"
return VariableColumn, GolangCode
}
case "uuid.UUID":
{
VariableColumn = "uuid.FromBytes([]byte(" + VariableName + RequestColumnName + "))"
GolangCode = Column1.NameGo + `, err := uuid.FromBytes([]byte(Request.` + RequestColumnName + `))
if err != nil {
return &Otvet, err
}
`
return VariableColumn, GolangCode
}
}
return VariableColumn, GolangCode
}
// ConvertProtobufTypeToGolangAlias - возвращает имя переменной + имя колонки, преобразованное в тип golang(alias) из protobuf
func ConvertProtobufTypeToGolangAlias(Table1 *types.Table, Column1 *types.Column, VariableName string) (VariableColumn string, GolangCode string) {
RequestColumnName := FindRequestColumnName(Table1, Column1)
VariableColumn = VariableName + RequestColumnName
//GolangCode := ""
TableName := Table1.Name
IDName := Column1.Name
@ -2516,6 +2587,7 @@ func ReplaceIDtoID_Many(Text string, Table1 *types.Table) string {
TextNames, TextNamesTypes, TextProtoNames := FindTextIDMany(Table1)
Otvet = strings.ReplaceAll(Otvet, "ReplaceManyID(ID)", TextNames)
Otvet = strings.ReplaceAll(Otvet, "int64(ID)", TextProtoNames)
Otvet = strings.ReplaceAll(Otvet, "(ID int64", "("+TextNamesTypes)
Otvet = strings.ReplaceAll(Otvet, "(ID)", "("+TextNames+")")
@ -2767,3 +2839,27 @@ func IsPrimaryKeyColumn(Table1 *types.Table, Column *types.Column) bool {
return Otvet
}
// ReplaceColumnNameM - заменяет "ReplaceColumnNameM(m.ID)" на "m.ID"
func ReplaceColumnNameM(Text string, Column *types.Column) string {
Otvet := Text
TextNew := "m." + Column.Name
Otvet = strings.ReplaceAll(Otvet, "ReplaceColumnNameM(m.ID)", TextNew)
return Otvet
}
// ReplaceIntFromProtoRequest - заменяет "IntFromProto(Request.ID)" на "Request.ID"
func ReplaceIntFromProtoRequest(Text string, Table1 *types.Table, Column *types.Column) string {
Otvet := Text
Variable, Golang_code := ConvertProtobufTypeToGolangType(Table1, Column, "Request.")
TextNew := "Request." + Variable
if Golang_code != "" {
}
Otvet = strings.ReplaceAll(Otvet, "IntFromProto(Request.ID)", TextNew)
return Otvet
}

View File

@ -167,6 +167,9 @@ func CreateFiles(Table1 *types.Table) error {
//id := m.ID
TextDB = create_files.ReplaceColumnNamePK(TextDB, Table1)
//"ReplaceColumnNameM(m.ID)"
//TextDB = create_files.ReplaceColumnNameM(TextDB, Table1)
//создание текста
TextDB = strings.ReplaceAll(TextDB, config.Settings.TEXT_TEMPLATE_MODEL, ModelName)
TextDB = strings.ReplaceAll(TextDB, config.Settings.TEXT_TEMPLATE_TABLENAME, Table1.Name)
@ -890,7 +893,7 @@ func CreateFilesCache(Table1 *types.Table) error {
}
//alias
TextCache = create_files.ConvertIDToAlias_OtvetID(TextCache, Table1)
TextCache = create_files.ReplaceIDToAlias_OtvetID(TextCache, Table1)
//const CACHE_SIZE = 1000
CACHE_ELEMENTS_COUNT_MAX := config.Settings.CACHE_ELEMENTS_COUNT_MAX

View File

@ -534,6 +534,7 @@ func FindTextUpdateEveryColumn1(TextGRPCServerUpdateFunc string, Table1 *types.T
IsPrimaryKey := create_files.IsPrimaryKeyColumn(Table1, Column1)
//замена ID на PrimaryKey
Otvet = create_files.ReplacePrimaryKeyOtvetID(Otvet, Table1)
Otvet = create_files.ReplacePrimaryKeyM_ID(Otvet, Table1)
//ColumnNameGolang := create_files.ConvertGolangTypeToProtobufType(Table1, Column1, "m")
@ -789,6 +790,8 @@ func CreateFilesCache(Table1 *types.Table) error {
}
//TextGRPCServer = create_files.ReplaceIntFromProtoRequest(TextGRPCServer, Table1)
//замена RequestId{}
TextGRPCServer = create_files.ReplaceTextRequestID_PrimaryKey(TextGRPCServer, Table1)
@ -797,11 +800,13 @@ func CreateFilesCache(Table1 *types.Table) error {
TextGRPCServer = create_files.ReplacePrimaryKeyM_ID(TextGRPCServer, Table1)
if Table1.PrimaryKeyColumnsCount == 1 {
ColumnPK := create_files.FindPrimaryKeyColumn(Table1)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, "ReplaceManyID(ID)", ColumnPK.NameGo)
//ColumnPK := create_files.FindPrimaryKeyColumn(Table1)
} else {
TextIDMany := ", ID)"
TextIDMany := "ReplaceManyID(ID)"
TextIDMany = create_files.ReplaceIDtoID_Many(TextIDMany, Table1)
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, "int64(ID)", "("+Table1.Name+".StringIdentifier"+TextIDMany+")")
TextGRPCServer = strings.ReplaceAll(TextGRPCServer, "ReplaceManyID(ID)", TextIDMany)
}
TextGRPCServer = create_files.ReplaceIDtoID_Many(TextGRPCServer, Table1)