You've already forked crud_generator
mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2025-07-16 02:54:19 +02:00
сделал PrintableString()
This commit is contained in:
@ -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{}
|
||||
|
@ -146,7 +146,7 @@ func (crud Crud_DB) create_update_ctx(ctx context.Context, m *lawsuit_status_typ
|
||||
m.DeletedAt = time.Time{}
|
||||
}
|
||||
|
||||
// колонки с null
|
||||
//колонки с null
|
||||
tx := db
|
||||
MassOmit := make([]string, 0)
|
||||
var ColumnName string
|
||||
@ -156,12 +156,17 @@ 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)
|
||||
}
|
||||
|
||||
// игнор пустых колонок
|
||||
//игнор пустых колонок
|
||||
tx = tx.Omit(MassOmit...)
|
||||
|
||||
// запись
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 = ''")
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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 + "\""
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
;
|
||||
|
||||
------------------------------------------- Все таблицы и колонки ------------------------------
|
||||
|
Reference in New Issue
Block a user