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

сделал readme

This commit is contained in:
Nikitin Aleksandr 2023-11-14 18:03:01 +03:00
parent a40b48ea70
commit 1550cf0232
10 changed files with 203 additions and 0 deletions

View File

@ -5,6 +5,8 @@ For each table in the Postgres SQL database, files will be created to perform cr
create, read, update, save, delete (or delete + restore) create, read, update, save, delete (or delete + restore)
files are generated: files are generated:
1. model - struct structure with all fields from the database, and gorm + db + json annotations 1. model - struct structure with all fields from the database, and gorm + db + json annotations
Tables with fields in the database must be created manually in advance.
The code generator will find all the tables and their fields in the database and use them.
2. db - files for performing crud operations, exchange with the database, 2. db - files for performing crud operations, exchange with the database,
as well as files with tests as well as files with tests
3. grpc server - files for performing crud operations over the network, using the GRPC protocol, 3. grpc server - files for performing crud operations over the network, using the GRPC protocol,

View File

@ -0,0 +1,36 @@
package main
import (
configmain "github.com/ManyakRus/starter/config"
"github.com/ManyakRus/starter/stopapp"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/crud_starter"
)
// main - старт приложения
func main() {
StartApp()
}
// StartApp - выполнение всех операций для старта приложения
func StartApp() {
configmain.LoadEnv()
stopapp.StartWaitStop()
crud_starter.InitCrudTransport_DB()
postgres_gorm.StartDB()
StartGRPSServer()
StartNRPSServer()
stopapp.GetWaitGroup_Main().Wait()
}
// StartGRPSServer - запускает GRPC server
func StartGRPSServer() {
server_grpc.Start()
}
// StartNRPSServer - запускает GRPC server
func StartNRPSServer() {
server_nrpc.Start()
}

View File

@ -0,0 +1,18 @@
package server_grpc
import (
"errors"
"github.com/ManyakRus/starter/micro"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_client/constants"
)
// ErrorModelVersion
func ErrorModelVersion(Model interface{}) error {
var err error
TypeName := micro.GetType(Model)
s := constants.TEXT_ERROR_MODEL_VERSION + " " + TypeName
err = errors.New(s)
return err
}

View File

@ -0,0 +1,95 @@
package server_grpc
import (
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/stopapp"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_proto"
"google.golang.org/grpc"
"net"
"os"
)
// ServerGRPC is used to implement UnimplementedSyncServiceServer.
type ServerGRPC struct {
grpc_proto.UnimplementedSyncServiceServer
}
type SettingsINI struct {
GRPC_PORT string
}
var Settings SettingsINI
var Conn *grpc.Server
func Connect() {
//var err error
if Settings.GRPC_PORT == "" {
FillSettings()
}
Conn = grpc.NewServer()
grpc_proto.RegisterSyncServiceServer(Conn, &ServerGRPC{})
stopapp.GetWaitGroup_Main().Add(1)
go serve_go()
}
func serve_go() {
defer stopapp.GetWaitGroup_Main().Done()
lis, err := net.Listen("tcp", ":"+Settings.GRPC_PORT)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
log.Printf("Server GRPC listening at %v", lis.Addr())
if err := Conn.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
return
}
func FillSettings() {
Settings = SettingsINI{}
Settings.GRPC_PORT = os.Getenv("GRPC_PORT")
if Settings.GRPC_PORT == "" {
log.Panic("Need fill GRPC_PORT ! in OS Environment ")
}
}
// WaitStop - ожидает отмену глобального контекста
func WaitStop() {
defer stopapp.GetWaitGroup_Main().Done()
select {
case <-contextmain.GetContext().Done():
log.Warn("Context app is canceled. grpc_connect")
}
//ждём пока отправляемых сейчас сообщений будет =0
stopapp.WaitTotalMessagesSendingNow("grpc_connect")
//закрываем соединение
CloseConnection()
}
// Start - необходимые процедуры для запуска сервера GRPC
func Start() {
Connect()
stopapp.GetWaitGroup_Main().Add(1)
go WaitStop()
}
func CloseConnection() {
Conn.Stop()
}

View File

@ -0,0 +1,16 @@
package crud_starter
import (
)
// initCrudTransport_manual_DB - заполняет объекты crud для работы с БД напрямую
func initCrudTransport_manual_DB() {
}
// initCrudTransport_manual_GRPC - заполняет объекты crud для работы с БД напрямую
func initCrudTransport_manual_GRPC() {
}
// initCrudTransport_manual_NRPC - заполняет объекты crud для работы с БД напрямую
func initCrudTransport_manual_NRPC() {
}

View File

@ -0,0 +1,24 @@
package calc_struct_version
import (
"github.com/ManyakRus/starter/micro"
"reflect"
)
// CalcStructVersion - вычисляет версию модели
func CalcStructVersion(t reflect.Type) uint32 {
var ReturnVar uint32
names := make([]string, t.NumField())
// имя + тип поля
s := ""
for i := range names {
s = s + t.Field(i).Name
s = s + t.Field(i).Type.Name()
}
ReturnVar = micro.Hash(s)
return ReturnVar
}

View File

@ -0,0 +1 @@
package calc_struct_version

View File

@ -0,0 +1,5 @@
package constants
var TIMEOUT_SECONDS = 30
const TEXT_ERROR_MODEL_VERSION = "Error: wrong version object model"

View File

@ -47,6 +47,7 @@ type SettingsINI struct {
PREFIX_SERVER_GRPC string PREFIX_SERVER_GRPC string
COMMENT_MODEL_STRUCT string COMMENT_MODEL_STRUCT string
TEXT_MODULE_GENERATED string TEXT_MODULE_GENERATED string
TEMPLATE_FOLDERNAME_MAIN string
} }
// FillSettings загружает переменные окружения в структуру из переменных окружения // FillSettings загружает переменные окружения в структуру из переменных окружения
@ -134,6 +135,8 @@ func FillSettings() {
NEED_CREATE_NRPC_CLIENT_TEST := BoolFromString(sNEED_CREATE_NRPC_CLIENT_TEST) NEED_CREATE_NRPC_CLIENT_TEST := BoolFromString(sNEED_CREATE_NRPC_CLIENT_TEST)
Settings.NEED_CREATE_NRPC_CLIENT_TEST = NEED_CREATE_NRPC_CLIENT_TEST Settings.NEED_CREATE_NRPC_CLIENT_TEST = NEED_CREATE_NRPC_CLIENT_TEST
Settings.TEMPLATE_FOLDERNAME_MAIN = os.Getenv("TEMPLATE_FOLDERNAME_MAIN")
} }
// CurrentDirectory - возвращает текущую директорию ОС // CurrentDirectory - возвращает текущую директорию ОС

View File

@ -5,6 +5,8 @@
create, read, update, save, delete (или delete + restore) create, read, update, save, delete (или delete + restore)
генерируются файлы: генерируются файлы:
1. model - структура struct со всеми полями из БД, и аннотациями gorm + db + json 1. model - структура struct со всеми полями из БД, и аннотациями gorm + db + json
Таблицы с полями в базе данных должны быть созданы заранее вручную.
Кодогенератор найдёт в базе все таблицы и их поля, и использует их.
2. db - файлы выполнения crud операций, обмен с базой данных, 2. db - файлы выполнения crud операций, обмен с базой данных,
а также файлы с тестами а также файлы с тестами
3. grpc server - файлы для выполнения crud операций по сети, по протоколу GRPC, 3. grpc server - файлы для выполнения crud операций по сети, по протоколу GRPC,
@ -17,6 +19,7 @@ create, read, update, save, delete (или delete + restore)
а также файлы с тестами а также файлы с тестами
7. crud_starter - файл с функциями переключения на нужный протокол db или grpc или nrpc 7. crud_starter - файл с функциями переключения на нужный протокол db или grpc или nrpc
Шаблоны кода хранятся в папке bin/templates. Шаблоны кода хранятся в папке bin/templates.
Шаблон кода - это файл .go скопированный из реального проекта - Шаблон кода - это файл .go скопированный из реального проекта -
поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл. поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл.