package main import ( "git.sxidc.com/go-tools/utils/strutils" "git.sxidc.com/service-supports/ds-sdk/sdk" "math/rand" ) const ( token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU=" address = "localhost" httpPort = "10000" grpcPort = "10001" namespace = "ns-sdk-demo" dataSource = "ds-sdk-demo" dataContainer = "dc-sdk-demo" deleteSql = "delete-sdk-demo" ) const ( sqlInsertTpl = "INSERT INTO test.classes (id, name, student_num) VALUES ('[[ .id ]]', '[[ .name ]]', [[ .student_num ]])" ) var ( dataContainerSpec = sdk.DataContainerDatabaseSpec{ TableName: "test.classes", Columns: []sdk.DataContainerDatabaseColumnSpec{ { Name: "id", Type: "varchar(32)", Comment: "id", PrimaryKey: true, }, { Name: "name", Type: "varchar(128)", Comment: "班名", NotNull: true, }, { Name: "student_num", Type: "integer", Comment: "学生数量", Default: 60, }, }, } sqlSpec = sdk.SqlSpec{ Transaction: false, Clauses: "- DELETE FROM test.classes WHERE id = '{{ .id }}'", } ) func main() { classID := strutils.SimpleUUID() className := strutils.SimpleUUID() studentNum := rand.Int31n(100) insertExecuteParams := map[string]any{ "id": classID, "name": className, "student_num": studentNum, } deleteExecuteParams := map[string]any{ "id": classID, } err := sdk.InitInstance(token, address, httpPort, grpcPort, namespace, dataSource) if err != nil { panic(err) } defer func() { err := sdk.DestroyInstance() if err != nil { panic(err) } }() err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerSpec.ToMap()) if err != nil { panic(err) } err = sdk.GetInstance().CreateSQL(deleteSql, sqlSpec.ToMap()) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteRawSql(sqlInsertTpl, insertExecuteParams) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteSql(deleteSql, deleteExecuteParams) if err != nil { panic(err) } err = sdk.GetInstance().Transaction(func(tx *sdk.Transaction) error { err := tx.ExecuteRawSql(sqlInsertTpl, insertExecuteParams) if err != nil { return err } err = tx.ExecuteSql(deleteSql, deleteExecuteParams) if err != nil { return err } return nil }) if err != nil { panic(err) } err = sdk.GetInstance().DeleteDataContainer(dataContainer) if err != nil { panic(err) } }