mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-23 07:41:25 +00:00
DB: Table name fix (#145)
This commit is contained in:
@@ -45,20 +45,23 @@ func (e *Db) Create(ctx context.Context, req *db.CreateRequest, rsp *db.CreateRe
|
|||||||
if !ok {
|
if !ok {
|
||||||
tenantId = "micro"
|
tenantId = "micro"
|
||||||
}
|
}
|
||||||
tenantId = strings.Replace(tenantId, "/", "_", -1)
|
if req.Table == "" {
|
||||||
|
req.Table = "default"
|
||||||
|
}
|
||||||
|
tenantId = strings.Replace(strings.Replace(tenantId, "/", "_", -1), "-", "_", -1)
|
||||||
tableName := tenantId + "_" + req.Table
|
tableName := tenantId + "_" + req.Table
|
||||||
if !re.Match([]byte(tableName)) {
|
if !re.Match([]byte(tableName)) {
|
||||||
return errors.BadRequest("db.create", "table name is invalid")
|
return errors.BadRequest("db.create", fmt.Sprintf("table name %v is invalid", req.Table))
|
||||||
}
|
}
|
||||||
|
|
||||||
db, err := e.GetDBConn(ctx)
|
db, err := e.GetDBConn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, ok = c.Get(req.Table)
|
_, ok = c.Get(tableName)
|
||||||
if !ok {
|
if !ok {
|
||||||
db.Exec(fmt.Sprintf(stmt, tableName))
|
db.Exec(fmt.Sprintf(stmt, tableName))
|
||||||
c.Set(req.Table, true, 0)
|
c.Set(tableName, true, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
m := req.Record.AsMap()
|
m := req.Record.AsMap()
|
||||||
@@ -89,7 +92,14 @@ func (e *Db) Update(ctx context.Context, req *db.UpdateRequest, rsp *db.UpdateRe
|
|||||||
if !ok {
|
if !ok {
|
||||||
tenantId = "micro"
|
tenantId = "micro"
|
||||||
}
|
}
|
||||||
tenantId = strings.Replace(tenantId, "/", "_", -1)
|
if req.Table == "" {
|
||||||
|
req.Table = "default"
|
||||||
|
}
|
||||||
|
tenantId = strings.Replace(strings.Replace(tenantId, "/", "_", -1), "-", "_", -1)
|
||||||
|
tableName := tenantId + "_" + req.Table
|
||||||
|
if !re.Match([]byte(tableName)) {
|
||||||
|
return errors.BadRequest("db.create", fmt.Sprintf("table name %v is invalid", req.Table))
|
||||||
|
}
|
||||||
db, err := e.GetDBConn(ctx)
|
db, err := e.GetDBConn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -105,7 +115,7 @@ func (e *Db) Update(ctx context.Context, req *db.UpdateRequest, rsp *db.UpdateRe
|
|||||||
|
|
||||||
db.Transaction(func(tx *gorm.DB) error {
|
db.Transaction(func(tx *gorm.DB) error {
|
||||||
rec := []Record{}
|
rec := []Record{}
|
||||||
err = tx.Table(tenantId+"_"+req.Table).Where("ID = ?", id).Find(&rec).Error
|
err = tx.Table(tableName).Where("ID = ?", id).Find(&rec).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -122,7 +132,7 @@ func (e *Db) Update(ctx context.Context, req *db.UpdateRequest, rsp *db.UpdateRe
|
|||||||
}
|
}
|
||||||
bs, _ := json.Marshal(m)
|
bs, _ := json.Marshal(m)
|
||||||
|
|
||||||
return tx.Table(tenantId + "_" + req.Table).Save(Record{
|
return tx.Table(tableName).Save(Record{
|
||||||
ID: m[idKey].(string),
|
ID: m[idKey].(string),
|
||||||
Data: bs,
|
Data: bs,
|
||||||
}).Error
|
}).Error
|
||||||
@@ -140,12 +150,20 @@ func (e *Db) Read(ctx context.Context, req *db.ReadRequest, rsp *db.ReadResponse
|
|||||||
if !ok {
|
if !ok {
|
||||||
tenantId = "micro"
|
tenantId = "micro"
|
||||||
}
|
}
|
||||||
tenantId = strings.Replace(tenantId, "/", "_", -1)
|
if req.Table == "" {
|
||||||
|
req.Table = "default"
|
||||||
|
}
|
||||||
|
tenantId = strings.Replace(strings.Replace(tenantId, "/", "_", -1), "-", "_", -1)
|
||||||
|
tableName := tenantId + "_" + req.Table
|
||||||
|
if !re.Match([]byte(tableName)) {
|
||||||
|
return errors.BadRequest("db.create", fmt.Sprintf("table name %v is invalid", req.Table))
|
||||||
|
}
|
||||||
|
|
||||||
db, err := e.GetDBConn(ctx)
|
db, err := e.GetDBConn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
db = db.Table(tenantId + "_" + req.Table)
|
db = db.Table(tableName)
|
||||||
for _, query := range queries {
|
for _, query := range queries {
|
||||||
typ := "text"
|
typ := "text"
|
||||||
switch query.Value.(type) {
|
switch query.Value.(type) {
|
||||||
@@ -206,15 +224,21 @@ func (e *Db) Delete(ctx context.Context, req *db.DeleteRequest, rsp *db.DeleteRe
|
|||||||
if !ok {
|
if !ok {
|
||||||
tenantId = "micro"
|
tenantId = "micro"
|
||||||
}
|
}
|
||||||
|
if req.Table == "" {
|
||||||
tenantId = strings.Replace(tenantId, "/", "_", -1)
|
req.Table = "default"
|
||||||
|
}
|
||||||
|
tenantId = strings.Replace(strings.Replace(tenantId, "/", "_", -1), "-", "_", -1)
|
||||||
|
tableName := tenantId + "_" + req.Table
|
||||||
|
if !re.Match([]byte(tableName)) {
|
||||||
|
return errors.BadRequest("db.create", fmt.Sprintf("table name %v is invalid", req.Table))
|
||||||
|
}
|
||||||
|
|
||||||
db, err := e.GetDBConn(ctx)
|
db, err := e.GetDBConn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return db.Table(tenantId + "_" + req.Table).Delete(Record{
|
return db.Table(tableName).Delete(Record{
|
||||||
ID: req.Id,
|
ID: req.Id,
|
||||||
}).Error
|
}).Error
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user