135 lines
2.5 KiB
Go
135 lines
2.5 KiB
Go
package company
|
|
|
|
import (
|
|
"context"
|
|
"git.makki.io/makki/libgo/dbu"
|
|
"github.com/guregu/null/v5"
|
|
"log/slog"
|
|
"reflect"
|
|
)
|
|
|
|
type Company struct {
|
|
Clid int64 `db:"clid" json:"-"`
|
|
ID int64 `db:"id"`
|
|
Code string `db:"code"`
|
|
Title null.String `db:"title"`
|
|
IsActive bool `db:"is_active"`
|
|
Notes null.String `db:"notes"`
|
|
|
|
Tmpl null.String `db:"tmpl"`
|
|
}
|
|
|
|
func New() *Company {
|
|
m := &Company{
|
|
IsActive: true,
|
|
}
|
|
|
|
// m.__DetailStruct__ = dbu.NewDetailData[*__DetailStruct__]("__sql_filename__", "__sql_masterlink_field__", "__struct_master_field_link__", true)
|
|
|
|
return m
|
|
}
|
|
|
|
func DbRead(ctx context.Context, id int64) (*Company, error) {
|
|
rp, err := dbu.NewRepoWithFile(ctx, "company", nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
data := New()
|
|
//rp.AddDetail(data.Auths)
|
|
err = rp.Read(id, data)
|
|
return data, err
|
|
}
|
|
|
|
func (m *Company) GetIDVal() int64 {
|
|
return m.ID
|
|
}
|
|
|
|
func (m *Company) SetMasterLinkVal(masterField string, val int64) {
|
|
reflect.ValueOf(m).Elem().FieldByName(masterField).SetInt(val)
|
|
}
|
|
|
|
func DbDelete(ctx context.Context, id int64, log bool, usrID *int64) error {
|
|
tx, err := dbu.DB.Begin(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer tx.Rollback(ctx)
|
|
|
|
rp, err := dbu.NewRepoWithFile(ctx, "company", tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if log {
|
|
var oldData *Company
|
|
oldData, err = DbRead(ctx, id)
|
|
if err != nil {
|
|
return dbu.ParsedErrSuppressNoRows(err)
|
|
}
|
|
err = dbu.DB.LogDMLTx("d", "company", oldData.ID, usrID, "", oldData, nil, tx)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
}
|
|
}
|
|
|
|
err = rp.Delete(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return tx.Commit(ctx)
|
|
}
|
|
|
|
func (m *Company) DbCreate(ctx context.Context, log bool, usrID *int64) error {
|
|
rp, err := dbu.NewRepoWithFile(ctx, "company", nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = rp.Create(m)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if log {
|
|
err = dbu.DB.LogDMLTx("c", "company", m.ID, usrID, "", nil, m, nil)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (m *Company) DbUpdate(ctx context.Context, log bool, usrID *int64) error {
|
|
tx, err := dbu.DB.Begin(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer tx.Rollback(ctx)
|
|
|
|
rp, err := dbu.NewRepoWithFile(ctx, "company", tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if log {
|
|
var oldData *Company
|
|
oldData, err = DbRead(ctx, m.ID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = dbu.DB.LogDMLTx("u", "company", oldData.ID, usrID, "", oldData, m, tx)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
}
|
|
}
|
|
|
|
err = rp.Update(m.ID, m)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return tx.Commit(ctx)
|
|
}
|