base structure

This commit is contained in:
ctengiz
2024-04-15 10:00:31 +03:00
parent 19d9d24530
commit 61f5f8fe04
21 changed files with 846 additions and 55 deletions

162
svc/api/acompany.go Normal file
View File

@@ -0,0 +1,162 @@
package api
import (
"bordro-esleme/model/company"
"git.makki.io/makki/libgo/cmn"
"git.makki.io/makki/libgo/dbu"
"git.makki.io/makki/libgo/mhttp"
"git.makki.io/makki/libgo/nauth"
"github.com/go-chi/chi/v5"
"net/http"
)
func companyGet(w http.ResponseWriter, r *http.Request) {
/*
tc := auth.TokenDataFromRequest(r)
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpRead) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
id := cmn.StrToInt64(chi.URLParam(r, "id"))
data, err := company.DbRead(r.Context(), id)
if err != nil {
if dbu.IsNoRowsErr(err) {
mhttp.NotFound(w)
return
} else {
mhttp.InternalServerError(w, err)
return
}
}
mhttp.ResponseSuccess(w, data)
}
func companyCreate(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpCreate) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
data := company.New()
err := cmn.BodyToJsonReq(r, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
err = data.DbCreate(r.Context(), true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, data.ID)
}
func companyUpdate(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpUpdate) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
data := company.New()
err := cmn.BodyToJsonReq(r, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
err = data.DbUpdate(r.Context(), true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, true)
}
func companyDelete(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpDelete) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
id := cmn.StrToInt64(chi.URLParam(r, "id"))
err := company.DbDelete(r.Context(), id, true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, true)
}
func companyList(w http.ResponseWriter, r *http.Request) {
/*
tc := auth.TokenDataFromRequest(r)
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpRead) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
var data []company.Company
tr, err := dbu.NewTableRequestFromRequest(r)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
rp, err := dbu.NewRepoWithFile(r.Context(), "company", nil)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
respData, err := rp.MList(tr, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, respData)
}

View File

@@ -13,6 +13,6 @@ func login(w http.ResponseWriter, r *http.Request) {
return
}
clientResp := authResp.GetEndUserReponse()
clientResp := authResp.GetEndUserResponse()
mhttp.ResponseSuccess(w, clientResp)
}

View File

@@ -62,7 +62,12 @@ func HttpHandler(re enums.TRunEnv) http.Handler {
// Handle valid / invalid tokens.
r.Use(nauth.CheckTokenValidity)
r.Get("/sy/companies", napi.CompanyList)
// company routes
r.Get("/company/{id:[0-9]+}", companyGet)
r.Get("/company", companyList)
r.Put("/company", companyUpdate)
r.Post("/company", companyCreate)
r.Delete("/company/{id:[0-9]+}", companyDelete)
})
})

View File

@@ -1,6 +1,6 @@
module bordro-esleme
go 1.22.1
go 1.22.2
toolchain go1.22.2
@@ -9,5 +9,6 @@ require (
git.notitek.com.tr/common/notgo v0.0.0-20240408194744-d12ce3096580 // indirect
github.com/go-chi/chi/v5 v5.0.12 // indirect
github.com/go-chi/cors v1.2.1 // indirect
github.com/guregu/null/v5 v5.0.0 // indirect
github.com/segmentio/ksuid v1.0.4 // indirect
)

View File

@@ -0,0 +1,134 @@
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)
}