feat: Add table listing and DSL retrieval processes
- Implement processList to return all loaded tables and processDSL to retrieve the DSL of a specified table. - Add unit tests for the new processes to ensure correct functionality and data integrity. - Update process registration in exportProcess to include the new operations.
This commit is contained in:
parent
cae4d06373
commit
eba6ba49c0
2 changed files with 71 additions and 2 deletions
|
|
@ -25,6 +25,8 @@ import (
|
||||||
// Export process
|
// Export process
|
||||||
|
|
||||||
func exportProcess() {
|
func exportProcess() {
|
||||||
|
|
||||||
|
// Table Data Operations
|
||||||
gouProcess.Register("yao.table.setting", processSetting)
|
gouProcess.Register("yao.table.setting", processSetting)
|
||||||
gouProcess.Register("yao.table.xgen", processXgen)
|
gouProcess.Register("yao.table.xgen", processXgen)
|
||||||
gouProcess.Register("yao.table.component", processComponent)
|
gouProcess.Register("yao.table.component", processComponent)
|
||||||
|
|
@ -43,11 +45,15 @@ func exportProcess() {
|
||||||
gouProcess.Register("yao.table.deletewhere", processDeleteWhere)
|
gouProcess.Register("yao.table.deletewhere", processDeleteWhere)
|
||||||
gouProcess.Register("yao.table.deletein", processDeleteIn)
|
gouProcess.Register("yao.table.deletein", processDeleteIn)
|
||||||
gouProcess.Register("yao.table.export", processExport)
|
gouProcess.Register("yao.table.export", processExport)
|
||||||
|
|
||||||
|
// DSL Operations
|
||||||
|
gouProcess.Register("yao.table.exists", processExists)
|
||||||
|
gouProcess.Register("yao.table.read", processRead)
|
||||||
|
gouProcess.Register("yao.table.list", processList)
|
||||||
|
gouProcess.Register("yao.table.dsl", processDSL)
|
||||||
gouProcess.Register("yao.table.load", processLoad)
|
gouProcess.Register("yao.table.load", processLoad)
|
||||||
gouProcess.Register("yao.table.reload", processReload)
|
gouProcess.Register("yao.table.reload", processReload)
|
||||||
gouProcess.Register("yao.table.unload", processUnload)
|
gouProcess.Register("yao.table.unload", processUnload)
|
||||||
gouProcess.Register("yao.table.read", processRead)
|
|
||||||
gouProcess.Register("yao.table.exists", processExists)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func processXgen(process *gouProcess.Process) interface{} {
|
func processXgen(process *gouProcess.Process) interface{} {
|
||||||
|
|
@ -377,3 +383,26 @@ func processExists(process *gouProcess.Process) interface{} {
|
||||||
process.ValidateArgNums(1)
|
process.ValidateArgNums(1)
|
||||||
return Exists(process.ArgsString(0))
|
return Exists(process.ArgsString(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// processList returns all loaded tables
|
||||||
|
func processList(process *gouProcess.Process) interface{} {
|
||||||
|
tables := GetTables()
|
||||||
|
return tables
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTables returns all loaded tables
|
||||||
|
func GetTables() map[string]*DSL {
|
||||||
|
return Tables
|
||||||
|
}
|
||||||
|
|
||||||
|
// processGetDSL returns the DSL of a table by its ID
|
||||||
|
func processDSL(process *gouProcess.Process) interface{} {
|
||||||
|
process.ValidateArgNums(1)
|
||||||
|
id := process.ArgsString(0)
|
||||||
|
if !Exists(id) {
|
||||||
|
exception.New("table %s does not exist", 404, id).Throw()
|
||||||
|
}
|
||||||
|
|
||||||
|
tab := MustGet(process) // 0
|
||||||
|
return tab
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -640,6 +640,46 @@ func TestProcessRead(t *testing.T) {
|
||||||
assert.Equal(t, "::Pet Admin", res.(map[string]interface{})["name"])
|
assert.Equal(t, "::Pet Admin", res.(map[string]interface{})["name"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestProcessList(t *testing.T) {
|
||||||
|
test.Prepare(t, config.Conf)
|
||||||
|
defer test.Clean()
|
||||||
|
|
||||||
|
prepare(t)
|
||||||
|
clear(t)
|
||||||
|
testData(t)
|
||||||
|
|
||||||
|
args := []interface{}{}
|
||||||
|
res, err := process.New("yao.table.list", args...).Exec()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tables, ok := res.(map[string]*DSL)
|
||||||
|
assert.True(t, ok, "Expected map[string]*DSL")
|
||||||
|
assert.NotEmpty(t, tables, "Tables should not be empty")
|
||||||
|
assert.Contains(t, tables, "pet", "Should contain the pet table")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestProcessDSL(t *testing.T) {
|
||||||
|
test.Prepare(t, config.Conf)
|
||||||
|
defer test.Clean()
|
||||||
|
|
||||||
|
prepare(t)
|
||||||
|
clear(t)
|
||||||
|
testData(t)
|
||||||
|
|
||||||
|
args := []interface{}{"pet"}
|
||||||
|
res, err := process.New("yao.table.dsl", args...).Exec()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
dsl, ok := res.(*DSL)
|
||||||
|
assert.True(t, ok, "Expected map[string]interface{}")
|
||||||
|
assert.NotEmpty(t, dsl, "DSL should not be empty")
|
||||||
|
assert.Contains(t, dsl.Name, "Pet Admin", "DSL should contain name")
|
||||||
|
}
|
||||||
|
|
||||||
func testData(t *testing.T) {
|
func testData(t *testing.T) {
|
||||||
pet := model.Select("pet")
|
pet := model.Select("pet")
|
||||||
err := pet.Insert(
|
err := pet.Insert(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue