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)
|
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,
|
||||||
|
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
|
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 - возвращает текущую директорию ОС
|
||||||
|
@ -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 скопированный из реального проекта -
|
||||||
поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл.
|
поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл.
|
||||||
|
Loading…
Reference in New Issue
Block a user