mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2025-01-03 01:22:21 +02:00
сделал readme
This commit is contained in:
parent
a40b48ea70
commit
1550cf0232
@ -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)
|
||||
files are generated:
|
||||
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,
|
||||
as well as files with tests
|
||||
3. grpc server - files for performing crud operations over the network, using the GRPC protocol,
|
||||
|
36
bin/templates/cmd/main.go_
Normal file
36
bin/templates/cmd/main.go_
Normal 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()
|
||||
}
|
18
bin/templates/internal/server_grpc/server_grpc_func.go_
Normal file
18
bin/templates/internal/server_grpc/server_grpc_func.go_
Normal 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
|
||||
}
|
95
bin/templates/internal/server_grpc/server_grpc_starter.go_
Normal file
95
bin/templates/internal/server_grpc/server_grpc_starter.go_
Normal 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()
|
||||
}
|
||||
|
16
bin/templates/pkg/crud_starter/crud_starter_manual.go
Normal file
16
bin/templates/pkg/crud_starter/crud_starter_manual.go
Normal 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() {
|
||||
}
|
@ -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
|
||||
}
|
@ -0,0 +1 @@
|
||||
package calc_struct_version
|
5
bin/templates/pkg/network/grpc/constants/constants.go
Normal file
5
bin/templates/pkg/network/grpc/constants/constants.go
Normal file
@ -0,0 +1,5 @@
|
||||
package constants
|
||||
|
||||
var TIMEOUT_SECONDS = 30
|
||||
|
||||
const TEXT_ERROR_MODEL_VERSION = "Error: wrong version object model"
|
@ -47,6 +47,7 @@ type SettingsINI struct {
|
||||
PREFIX_SERVER_GRPC string
|
||||
COMMENT_MODEL_STRUCT string
|
||||
TEXT_MODULE_GENERATED string
|
||||
TEMPLATE_FOLDERNAME_MAIN string
|
||||
}
|
||||
|
||||
// FillSettings загружает переменные окружения в структуру из переменных окружения
|
||||
@ -134,6 +135,8 @@ func FillSettings() {
|
||||
NEED_CREATE_NRPC_CLIENT_TEST := BoolFromString(sNEED_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 - возвращает текущую директорию ОС
|
||||
|
@ -5,6 +5,8 @@
|
||||
create, read, update, save, delete (или delete + restore)
|
||||
генерируются файлы:
|
||||
1. model - структура struct со всеми полями из БД, и аннотациями gorm + db + json
|
||||
Таблицы с полями в базе данных должны быть созданы заранее вручную.
|
||||
Кодогенератор найдёт в базе все таблицы и их поля, и использует их.
|
||||
2. db - файлы выполнения crud операций, обмен с базой данных,
|
||||
а также файлы с тестами
|
||||
3. grpc server - файлы для выполнения crud операций по сети, по протоколу GRPC,
|
||||
@ -17,6 +19,7 @@ create, read, update, save, delete (или delete + restore)
|
||||
а также файлы с тестами
|
||||
7. crud_starter - файл с функциями переключения на нужный протокол db или grpc или nrpc
|
||||
|
||||
|
||||
Шаблоны кода хранятся в папке bin/templates.
|
||||
Шаблон кода - это файл .go скопированный из реального проекта -
|
||||
поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл.
|
||||
|
Loading…
Reference in New Issue
Block a user