2023-10-23 18:09:55 +03:00
|
|
|
package db_lawsuit_status_types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
model "gitlab.aescorp.ru/dsp_dev/claim/common/object_model"
|
|
|
|
"gitlab.aescorp.ru/dsp_dev/claim/common/object_model/pkg/db/constants"
|
|
|
|
"gitlab.aescorp.ru/dsp_dev/claim/nikitin/micro"
|
|
|
|
"gitlab.aescorp.ru/dsp_dev/claim/nikitin/postgres_gorm"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// TableName - имя таблицы в БД Postgres
|
|
|
|
const TableName string = "lawsuit_status_types"
|
|
|
|
|
|
|
|
// Crud_DB - объект для CRUD операций через БД
|
|
|
|
type Crud_DB struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read - находит запись в БД по ID
|
|
|
|
func (crud Crud_DB) Read(l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
//log.Trace("start Read() ", TableName, " id: ", id)
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err = crud.Read_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read_ctx - находит запись в БД по ID
|
|
|
|
func (crud Crud_DB) Read_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
id := l.ID
|
|
|
|
|
|
|
|
db := postgres_gorm.GetConnection()
|
|
|
|
db.WithContext(ctx)
|
|
|
|
|
|
|
|
tx := db.First(l, id)
|
|
|
|
err = tx.Error
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Save - записывает новый или существующий объект в базу данных
|
|
|
|
func (crud Crud_DB) Save(l *model.LawsuitStatusType) error {
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err := crud.Save_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Save_ctx - записывает новый или существующий объект в базу данных
|
|
|
|
func (crud Crud_DB) Save_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
is_create := !micro.BoolFromInt64(l.ID)
|
|
|
|
err := crud.create_update_ctx(ctx, l, is_create)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update - записывает существующий объект в базу данных
|
|
|
|
func (crud Crud_DB) Update(l *model.LawsuitStatusType) error {
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err := crud.Update_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update_ctx - записывает существующий объект в базу данных
|
|
|
|
func (crud Crud_DB) Update_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
err := crud.create_update_ctx(ctx, l, false)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create - записывает новый объект в базу данных
|
|
|
|
func (crud Crud_DB) Create(l *model.LawsuitStatusType) error {
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err := crud.Create_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create_ctx - записывает новый объект в базу данных
|
|
|
|
func (crud Crud_DB) Create_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
err := crud.create_update_ctx(ctx, l, true)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// create_update - записывает объект в базу данных
|
|
|
|
func (crud Crud_DB) create_update(l *model.LawsuitStatusType, is_create bool) error {
|
|
|
|
var err error
|
|
|
|
|
|
|
|
//log.Trace("start Save() ", TableName, " id: ", m.ID)
|
|
|
|
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err = crud.create_update_ctx(ctx, l, is_create)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// create_update_ctx - записывает объект в базу данных
|
|
|
|
func (crud Crud_DB) create_update_ctx(ctx context.Context, l *model.LawsuitStatusType, is_create bool) error {
|
|
|
|
var err error
|
|
|
|
|
|
|
|
//log.Trace("start Save() ", TableName, " id: ", m.ID)
|
|
|
|
|
|
|
|
// проверка ID
|
|
|
|
if is_create == true {
|
|
|
|
if l.ID != 0 {
|
|
|
|
TextError := fmt.Sprint("db.Save() ", TableName, " error: id !=0")
|
|
|
|
//log.Panic(sError)
|
|
|
|
err = errors.New(TextError)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
} else if l.ID == 0 {
|
|
|
|
TextError := fmt.Sprint("db.Save() ", TableName, " error: id =0")
|
|
|
|
err = errors.New(TextError)
|
|
|
|
//log.Panic(sError)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
db := postgres_gorm.GetConnection()
|
|
|
|
db.WithContext(ctx)
|
|
|
|
|
|
|
|
//заполним даты
|
|
|
|
Now := time.Now()
|
|
|
|
l.ModifiedAt = Now
|
|
|
|
if l.IsDeleted == true && l.DeletedAt.IsZero() == true {
|
|
|
|
l.DeletedAt = Now
|
|
|
|
} else if l.IsDeleted == false && l.DeletedAt.IsZero() == false {
|
|
|
|
l.DeletedAt = time.Time{}
|
|
|
|
}
|
|
|
|
|
|
|
|
//колонки с null
|
|
|
|
tx := db
|
|
|
|
MassOmit := make([]string, 0)
|
|
|
|
var ColumnName string
|
|
|
|
|
|
|
|
ColumnName = "DeletedAt"
|
|
|
|
if l.DeletedAt.IsZero() == true {
|
|
|
|
MassOmit = append(MassOmit, ColumnName)
|
|
|
|
}
|
|
|
|
|
|
|
|
ColumnName = "ExtID"
|
|
|
|
if l.ExtID == 0 {
|
|
|
|
MassOmit = append(MassOmit, ColumnName)
|
|
|
|
}
|
|
|
|
|
|
|
|
//игнор пустых колонок
|
|
|
|
tx = tx.Omit(MassOmit...)
|
|
|
|
|
|
|
|
//запись
|
|
|
|
if is_create == true {
|
|
|
|
tx = tx.Create(&l)
|
|
|
|
} else {
|
|
|
|
tx = tx.Save(&l)
|
|
|
|
}
|
|
|
|
err = tx.Error
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
//запишем NULL в пустые колонки
|
|
|
|
for f := 0; f < len(MassOmit); f++ {
|
|
|
|
ColumnName := MassOmit[f]
|
2023-10-24 18:03:04 +03:00
|
|
|
tx = db.Model(&l).Update(ColumnName, gorm.Expr("NULL"))
|
2023-10-23 18:09:55 +03:00
|
|
|
|
|
|
|
err = tx.Error
|
|
|
|
if err != nil {
|
|
|
|
TextError := fmt.Sprint("db.Update() ", TableName, " id: ", l.ID, " error: ", err)
|
|
|
|
err = errors.New(TextError)
|
|
|
|
return err
|
|
|
|
//log.Panic(sError)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Delete - записывает is_deleted = true
|
|
|
|
func (crud Crud_DB) Delete(l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err = crud.Delete_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Delete_ctx - записывает is_deleted = true
|
|
|
|
func (crud Crud_DB) Delete_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
l2 := model.LawsuitStatusType{}
|
|
|
|
l2.ID = l.ID
|
|
|
|
err = crud.Read_ctx(ctx, &l2)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
l2.IsDeleted = true
|
|
|
|
l.IsDeleted = true
|
|
|
|
|
|
|
|
err = crud.Save_ctx(ctx, &l2)
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Restore - записывает is_deleted = true
|
|
|
|
func (crud Crud_DB) Restore(l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
ctxMain := context.Background()
|
|
|
|
ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
defer ctxCancelFunc()
|
|
|
|
|
|
|
|
err = crud.Restore_ctx(ctx, l)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Restore_ctx - записывает is_deleted = true
|
|
|
|
func (crud Crud_DB) Restore_ctx(ctx context.Context, l *model.LawsuitStatusType) error {
|
|
|
|
//var Otvet model.LawsuitStatusType
|
|
|
|
var err error
|
|
|
|
|
|
|
|
l2 := model.LawsuitStatusType{}
|
|
|
|
l2.ID = l.ID
|
|
|
|
err = crud.Read_ctx(ctx, &l2)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
l2.IsDeleted = false
|
|
|
|
l.IsDeleted = false
|
|
|
|
|
|
|
|
err = crud.Save_ctx(ctx, &l2)
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
//// Find_ByExtID - находит запись в БД по ext_id и connection_id
|
|
|
|
//func Find_ByExtID(ext_id int64, connection_id int64) (model.LawsuitStatusType, error) {
|
|
|
|
// var Otvet model.LawsuitStatusType
|
|
|
|
// var err error
|
|
|
|
//
|
|
|
|
// if ext_id <= 0 {
|
|
|
|
// err = errors.New("Error: ext_id <=0")
|
|
|
|
// return Otvet, err
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// //
|
|
|
|
// ctxMain := context.Background()
|
|
|
|
// ctx, ctxCancelFunc := context.WithTimeout(ctxMain, time.Second*time.Duration(constants.TIMEOUT_DB_SECONDS))
|
|
|
|
// defer ctxCancelFunc()
|
|
|
|
//
|
|
|
|
// Otvet, err = Find_ByExtID_ctx(ctx, ext_id, connection_id)
|
|
|
|
//
|
|
|
|
// return Otvet, err
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
//// Find_ByExtID_ctx - находит запись в БД по ext_id и connection_id
|
|
|
|
//func Find_ByExtID_ctx(ctx context.Context, ext_id int64, connection_id int64) (model.LawsuitStatusType, error) {
|
|
|
|
// var Otvet model.LawsuitStatusType
|
|
|
|
// var err error
|
|
|
|
// //log.Trace("start Find_ByExtID() ", TableName, " ext_id: ", ext_id)
|
|
|
|
//
|
|
|
|
// if ext_id <= 0 {
|
|
|
|
// err = errors.New("Error: ext_id <=0")
|
|
|
|
// return Otvet, err
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// db := postgres_gorm.GetConnection()
|
|
|
|
// db.WithContext(ctx)
|
|
|
|
//
|
|
|
|
// tx := db.Where("ext_id = ?", ext_id).Where("connection_id = ?", connection_id).First(&Otvet)
|
|
|
|
// err = tx.Error
|
|
|
|
//
|
|
|
|
// return Otvet, err
|
|
|
|
//}
|