1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-12-16 21:52:42 +02:00
crud_generator/internal/create_files/crud_starter/crud_starter.go

519 lines
16 KiB
Go
Raw Normal View History

2023-10-26 16:03:50 +02:00
package crud_starter
import (
"github.com/ManyakRus/crud_generator/internal/config"
2023-11-03 13:21:35 +02:00
"github.com/ManyakRus/crud_generator/internal/create_files"
"github.com/ManyakRus/crud_generator/internal/folders"
2023-10-26 16:03:50 +02:00
"github.com/ManyakRus/crud_generator/internal/types"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/micro"
2024-09-20 13:58:46 +02:00
"io/fs"
2023-10-26 16:03:50 +02:00
"os"
"sort"
"strings"
)
2023-11-15 10:43:15 +02:00
// CreateAllFiles - создаёт все файлы в папке crud_starter
2023-10-26 16:03:50 +02:00
func CreateAllFiles(MapAll map[string]*types.Table) error {
var err error
2024-02-09 12:58:08 +02:00
//crud_starter.go
2024-09-17 13:41:37 +02:00
err = CreateFile_CrudStarter(MapAll)
2023-10-26 16:03:50 +02:00
if err != nil {
2024-09-17 13:41:37 +02:00
log.Error("CreateFile_CrudStarter() error: ", err)
2023-10-26 16:03:50 +02:00
return err
}
2024-02-09 12:58:08 +02:00
//crud_starter_manual.go
if config.Settings.NEED_CREATE_MANUAL_FILES == true {
err = CreateFileCrudStarter_manual(MapAll)
if err != nil {
log.Error("CreateFileCrudStarter_manual() error: ", err)
return err
}
}
2023-10-26 16:03:50 +02:00
return err
}
2024-09-17 13:41:37 +02:00
// CreateFile_CrudStarter - создаёт 1 файл в папке crud_starter
func CreateFile_CrudStarter(MapAll map[string]*types.Table) error {
2023-10-26 16:03:50 +02:00
var err error
2023-11-14 16:07:41 +02:00
if config.Settings.NEED_CREATE_DB == false {
2023-10-26 16:03:50 +02:00
return err
}
//чтение файлов
DirBin := micro.ProgramDir_bin()
//DirTemplates := DirBin + constants.FolderTemplates + micro.SeparatorFile()
2023-11-01 16:34:57 +02:00
DirReady := DirBin + config.Settings.READY_FOLDERNAME + micro.SeparatorFile()
2023-10-26 16:03:50 +02:00
//DirTemplatesCrudStarter := DirTemplates + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER + micro.SeparatorFile()
//FilenameTemplateCrudStarter := DirTemplatesCrudStarter + "crud_starter.go_"
2023-11-01 16:34:57 +02:00
DirReadyCrudStarter := DirReady + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER + micro.SeparatorFile()
2023-10-26 16:03:50 +02:00
FilenameReadyCrudStarter := DirReadyCrudStarter + "crud_starter.go"
//создадим папку готовых файлов
folders.CreateFolder(DirReadyCrudStarter)
//
2023-11-10 14:04:05 +02:00
TextCrudStarter := config.Settings.TEXT_MODULE_GENERATED + `package crud_starter`
2023-10-26 16:03:50 +02:00
//найдём новый текст для каждой таблицы
2023-11-01 16:34:57 +02:00
RepositoryURL := config.Settings.SERVICE_REPOSITORY_URL
ModelURL := RepositoryURL + config.Settings.TEMPLATE_FOLDERNAME_MODEL
2023-10-26 16:03:50 +02:00
//импорт
TextImport := FindTextImport(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextImport
//DB
2023-11-01 16:34:57 +02:00
TextDB := FindText_InitCrudTransport_DB(MapAll, ModelURL)
2023-10-26 16:03:50 +02:00
TextCrudStarter = TextCrudStarter + "\n" + TextDB
//GRPC
if config.Settings.NEED_CREATE_GRPC == true {
2023-10-26 16:03:50 +02:00
TextGRPC := FindTextGRPC(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextGRPC
}
//NRPC
if config.Settings.NEED_CREATE_NRPC == true {
2023-10-26 16:03:50 +02:00
TextNRPC := FindTextNRPC(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextNRPC
}
2023-11-15 16:59:21 +02:00
//замена импортов на новые URL
2024-09-06 14:10:00 +02:00
TextCrudStarter = create_files.Replace_RepositoryImportsURL(TextCrudStarter)
2023-11-15 16:59:21 +02:00
//удаление пустого импорта
2024-09-06 14:10:00 +02:00
TextCrudStarter = create_files.Delete_EmptyImport(TextCrudStarter)
2023-10-26 16:03:50 +02:00
//запись файла
2024-09-20 13:58:46 +02:00
err = os.WriteFile(FilenameReadyCrudStarter, []byte(TextCrudStarter), fs.FileMode(config.Settings.FILE_PERMISSIONS))
2023-10-26 16:03:50 +02:00
return err
}
// FindTextImport - возвращает текст всех функций .proto для таблицы
func FindTextImport(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
2024-02-09 12:58:08 +02:00
import (`
2023-10-26 16:03:50 +02:00
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
2023-11-03 13:21:35 +02:00
//все таблицы
TextStarter := ""
2024-02-09 12:58:08 +02:00
//TextModel := ""
2023-10-26 16:03:50 +02:00
TextDB := ""
TextGRPC := ""
2024-02-09 12:58:08 +02:00
//TextNRPC := ""
2023-10-26 16:03:50 +02:00
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
2023-11-03 13:21:35 +02:00
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2023-11-03 13:21:35 +02:00
continue
}
TextStarter = TextStarter + FindTextImportStarter1(Table1)
//TextModel = TextModel + FindTextImportModel1(Table1)
2023-11-01 16:34:57 +02:00
TextDB = TextDB + FindTextImportDB1(Table1)
TextGRPC = TextGRPC + FindTextImportGRPC1(Table1)
2024-02-09 12:58:08 +02:00
//TextNRPC = TextNRPC + FindTextImportNRPC1(Table1)
2023-10-26 16:03:50 +02:00
}
2024-02-09 12:58:08 +02:00
Otvet = Otvet + TextStarter + "\n" + TextDB + "\n" + TextGRPC
2023-10-26 16:03:50 +02:00
Otvet = Otvet + "\n)"
return Otvet
}
// FindTextImportStarter1 - возвращает текст импорта crud_starter_ для 1 таблицы
func FindTextImportStarter1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
DB_URL := config.Settings.SERVICE_REPOSITORY_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER + "/" + config.Settings.STARTER_TABLES_PREFIX + TableName
Otvet := "\n\t\"" + DB_URL + `"`
return Otvet
}
2023-11-01 16:34:57 +02:00
// FindTextImportModel1 - возвращает текст импорта Model для 1 таблицы
func FindTextImportModel1(Table1 *types.Table) string {
2023-10-26 16:03:50 +02:00
TableName := strings.ToLower(Table1.Name)
2023-11-07 16:58:02 +02:00
DB_URL := config.Settings.SERVICE_REPOSITORY_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_MODEL + "/" + TableName
Otvet := "\n\t\"" + DB_URL + `"`
2023-10-26 16:03:50 +02:00
return Otvet
}
2023-11-01 16:34:57 +02:00
// FindTextImportDB1 - возвращает текст импорта DB для 1 таблицы
func FindTextImportDB1(Table1 *types.Table) string {
2023-10-26 16:03:50 +02:00
TableName := strings.ToLower(Table1.Name)
2023-11-16 14:08:10 +02:00
DB_URL := config.Settings.SERVICE_REPOSITORY_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_CRUD
2023-11-16 17:07:59 +02:00
TableNameWithPrefix := config.Settings.PREFIX_CRUD + TableName
2024-02-09 12:58:08 +02:00
Otvet := "\n\t" + "\"" + DB_URL + "/" + TableNameWithPrefix + `"`
2023-10-26 16:03:50 +02:00
return Otvet
}
2023-11-01 16:34:57 +02:00
// FindTextImportGRPC1 - возвращает текст импорта GRPC для 1 таблицы
func FindTextImportGRPC1(Table1 *types.Table) string {
2023-11-15 16:59:21 +02:00
GRPC_URL := config.Settings.SERVICE_REPOSITORY_URL
2023-10-26 16:03:50 +02:00
TableName := strings.ToLower(Table1.Name)
2023-11-01 16:34:57 +02:00
Otvet := "\n\t\"" + GRPC_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_GRPC_CLIENT + "/grpc_" + TableName + `"`
2023-10-26 16:03:50 +02:00
return Otvet
}
2023-11-01 16:34:57 +02:00
// FindTextImportNRPC1 - возвращает текст импорта NRPC для 1 таблицы
func FindTextImportNRPC1(Table1 *types.Table) string {
2023-11-07 16:58:02 +02:00
//NRPC_URL := config.Settings.SERVICE_REPOSITORY_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_NRPC
2023-11-01 16:34:57 +02:00
TableName := strings.ToLower(Table1.Name)
2023-11-07 16:58:02 +02:00
Otvet := "\n\t\"" + config.Settings.SERVICE_REPOSITORY_URL + "/" + config.Settings.TEMPLATE_FOLDERNAME_NRPC_CLIENT + "/nrpc_" + TableName + `"`
2023-11-01 16:34:57 +02:00
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindText_InitCrudTransport_DB - возвращает текст для всех таблиц
2023-11-01 16:34:57 +02:00
func FindText_InitCrudTransport_DB(MapAll map[string]*types.Table, ModelURL string) string {
2023-10-26 16:03:50 +02:00
Otvet := `
// InitCrudTransport_DB - заполняет объекты crud для работы с БД напрямую
func InitCrudTransport_DB() {`
if config.Settings.USE_DEFAULT_TEMPLATE == true {
Otvet = Otvet + `
initCrudTransport_manual_DB()
`
}
2023-10-26 16:03:50 +02:00
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
2023-11-07 16:58:02 +02:00
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2023-11-07 16:58:02 +02:00
continue
}
2023-10-26 16:03:50 +02:00
Otvet = Otvet + FindTextDB1(Table1)
}
Otvet = Otvet + "\n}"
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindTextDB1 - возвращает текст для 1 таблицы
2023-10-26 16:03:50 +02:00
func FindTextDB1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
Otvet := "\n\t" + config.Settings.STARTER_TABLES_PREFIX + TableName + ".SetCrudInterface(" + config.Settings.PREFIX_CRUD + TableName + ".Crud_DB{})"
2023-10-26 16:03:50 +02:00
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindTextGRPC - возвращает текст для всех таблиц
2023-10-26 16:03:50 +02:00
func FindTextGRPC(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
// InitCrudTransport_GRPC - заполняет объекты crud для работы с БД напрямую
func InitCrudTransport_GRPC() {`
if config.Settings.USE_DEFAULT_TEMPLATE == true {
Otvet = Otvet + `
initCrudTransport_manual_GRPC()
`
}
2023-10-26 16:03:50 +02:00
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
2023-11-07 16:58:02 +02:00
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2023-11-07 16:58:02 +02:00
continue
}
2023-10-26 16:03:50 +02:00
Otvet = Otvet + FindTextGRPC1(Table1)
}
Otvet = Otvet + "\n}"
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindTextNRPC1 - возвращает текст для 1 таблицы
2023-10-26 16:03:50 +02:00
func FindTextGRPC1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
Otvet := "\n\t" + config.Settings.STARTER_TABLES_PREFIX + TableName + ".SetCrudInterface(grpc_" + TableName + ".Crud_GRPC{})"
2023-10-26 16:03:50 +02:00
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindTextNRPC - возвращает текст для всех таблиц
2023-10-26 16:03:50 +02:00
func FindTextNRPC(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
// InitCrudTransport_NRPC - заполняет объекты crud для работы с БД напрямую
func InitCrudTransport_NRPC() {`
if config.Settings.USE_DEFAULT_TEMPLATE == true {
Otvet = Otvet + `
initCrudTransport_manual_NRPC()
`
}
2023-10-26 16:03:50 +02:00
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
2023-11-07 16:58:02 +02:00
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2023-11-07 16:58:02 +02:00
continue
}
Otvet = Otvet + FindTextGRPC1(Table1) //GRPC будет делать функции NRPC
//Otvet = Otvet + FindTextNRPC1(Table1)
2023-10-26 16:03:50 +02:00
}
Otvet = Otvet + "\n}"
return Otvet
}
2024-02-09 12:58:08 +02:00
// FindTextNRPC1 - возвращает текст 1 таблицы
2023-10-26 16:03:50 +02:00
func FindTextNRPC1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
Otvet := "\n\t" + config.Settings.STARTER_TABLES_PREFIX + TableName + ".SetCrudInterface(nrpc_" + TableName + ".Crud_NRPC{})"
2023-10-26 16:03:50 +02:00
return Otvet
}
2024-02-09 12:58:08 +02:00
// CreateFileCrudStarter_manual - создаёт 1 файл в папке crud_starter
func CreateFileCrudStarter_manual(MapAll map[string]*types.Table) error {
var err error
if config.Settings.NEED_CREATE_DB == false {
return err
}
//чтение файлов
DirBin := micro.ProgramDir_bin()
//DirTemplates := DirBin + constants.FolderTemplates + micro.SeparatorFile()
DirReady := DirBin + config.Settings.READY_FOLDERNAME + micro.SeparatorFile()
//DirTemplatesCrudStarter := DirTemplates + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER + micro.SeparatorFile()
//FilenameTemplateCrudStarter := DirTemplatesCrudStarter + "crud_starter.go_"
DirReadyCrudStarter := DirReady + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER + micro.SeparatorFile()
FilenameReadyCrudStarter := DirReadyCrudStarter + "crud_starter_manual.go"
//создадим папку готовых файлов
folders.CreateFolder(DirReadyCrudStarter)
//
TextCrudStarter := config.Settings.TEXT_MODULE_GENERATED + `package crud_starter`
//найдём новый текст для каждой таблицы
RepositoryURL := config.Settings.SERVICE_REPOSITORY_URL
ModelURL := RepositoryURL + config.Settings.TEMPLATE_FOLDERNAME_MODEL
//импорт
TextImport := FindTextImport(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextImport
//DB
TextDB := FindText_InitCrudTransport_DB_manual(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextDB
//GRPC
if config.Settings.NEED_CREATE_GRPC == true {
TextGRPC := FindTextGRPC_manual(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextGRPC
}
//NRPC
if config.Settings.NEED_CREATE_NRPC == true {
TextNRPC := FindTextNRPC_manual(MapAll, ModelURL)
TextCrudStarter = TextCrudStarter + "\n" + TextNRPC
}
//замена импортов на новые URL
2024-09-06 14:10:00 +02:00
TextCrudStarter = create_files.Replace_RepositoryImportsURL(TextCrudStarter)
2024-02-09 12:58:08 +02:00
//удаление пустого импорта
2024-09-06 14:10:00 +02:00
TextCrudStarter = create_files.Delete_EmptyImport(TextCrudStarter)
2024-02-09 12:58:08 +02:00
//запись файла
2024-09-20 13:58:46 +02:00
err = os.WriteFile(FilenameReadyCrudStarter, []byte(TextCrudStarter), fs.FileMode(config.Settings.FILE_PERMISSIONS))
2024-02-09 12:58:08 +02:00
return err
}
// FindText_InitCrudTransport_DB_manual - возвращает текст для каждой таблицы
func FindText_InitCrudTransport_DB_manual(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
// initCrudTransport_manual_DB - заполняет объекты crud для работы с БД напрямую
func initCrudTransport_manual_DB() {`
// if config.Settings.USE_DEFAULT_TEMPLATE == true {
// Otvet = Otvet + `
//`
// }
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2024-02-09 12:58:08 +02:00
continue
}
Otvet = Otvet + FindTextDB_manual1(Table1)
}
Otvet = Otvet + "\n}"
return Otvet
}
// FindTextDB_manual1 - возвращает текст для 1 таблицы
func FindTextDB_manual1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
Otvet := "\n\t" + config.Settings.STARTER_TABLES_PREFIX + TableName + ".SetCrudManualInterface(" + config.Settings.PREFIX_CRUD + TableName + ".Crud_DB{})"
2024-02-09 12:58:08 +02:00
return Otvet
}
// FindTextGRPC_manual - возвращает текст для всех таблиц
func FindTextGRPC_manual(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
// initCrudTransport_manual_GRPC - заполняет объекты crud для работы с БД через протокол GRPC
func initCrudTransport_manual_GRPC() {`
// if config.Settings.USE_DEFAULT_TEMPLATE == true {
// Otvet = Otvet + `
//`
// }
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2024-02-09 12:58:08 +02:00
continue
}
Otvet = Otvet + FindTextGRPC_manual1(Table1)
}
Otvet = Otvet + "\n}"
return Otvet
}
// FindTextGRPC_manual1 - возвращает текст для 1 таблицы
func FindTextGRPC_manual1(Table1 *types.Table) string {
TableName := strings.ToLower(Table1.Name)
2024-09-20 13:58:46 +02:00
Otvet := "\n\t" + config.Settings.STARTER_TABLES_PREFIX + TableName + ".SetCrudManualInterface(grpc_" + TableName + ".Crud_GRPC{})"
2024-02-09 12:58:08 +02:00
return Otvet
}
// FindTextNRPC - возвращает текст для всех таблиц
func FindTextNRPC_manual(MapAll map[string]*types.Table, ModelURL string) string {
Otvet := `
// initCrudTransport_manual_NRPC - заполняет объекты crud для работы с БД через протокол NRPC
func initCrudTransport_manual_NRPC() {`
// if config.Settings.USE_DEFAULT_TEMPLATE == true {
// Otvet = Otvet + `
//`
// }
//сортировка по названию таблиц
keys := make([]string, 0, len(MapAll))
for k := range MapAll {
keys = append(keys, k)
}
sort.Strings(keys)
for _, key1 := range keys {
Table1, ok := MapAll[key1]
if ok == false {
log.Panic("MapAll[key1] not found, key: ", key1)
}
//проверка что таблица нормальная
2024-09-06 14:10:00 +02:00
err1 := create_files.IsGood_Table(Table1)
2024-06-04 17:03:27 +02:00
if err1 != nil {
log.Warn(err1)
2024-02-09 12:58:08 +02:00
continue
}
Otvet = Otvet + FindTextGRPC_manual1(Table1) //GRPC будет делать функции NRPC
//Otvet = Otvet + FindTextNRPC1(Table1)
}
Otvet = Otvet + "\n}"
return Otvet
}