package main import ( "git.sxidc.com/go-tools/utils/strutils" "git.sxidc.com/service-supports/ds-sdk/sdk" "math/rand" ) const ( token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU=" baseUrl = "http://localhost:10000" namespace = "ns-sdk-demo" dataSource = "ds-sdk-demo" dataContainer = "dc-sdk-demo" sql = "delete-sdk-demo" ) var ( dataSourceSpec = sdk.DataSourceDatabaseSpec{ Type: sdk.DataSourceDatabaseTypePostgres, UserName: "test", Password: "123456", Address: "localhost", Port: "30432", Database: "test", MaxConnections: 40, MaxIdleConnections: 10, } 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) newClassName := strutils.SimpleUUID() newStudentNum := rand.Int31n(100) err := sdk.InitInstance(token, baseUrl, namespace, &sdk.DataSourceOption{ Name: dataSource, Type: sdk.DataSourceTypeDatabase, Spec: dataSourceSpec.ToMap(), }) 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().GetDBOperations().NewSession(). Table("test.classes"). Create(map[string]any{ "id": classID, "name": className, "student_num": studentNum, }) if err != nil { panic(err) } err = sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Where("id = ?", classID). Delete() if err != nil { panic(err) } err = sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Create(map[string]any{ "id": classID, "name": className, "student_num": studentNum, }) if err != nil { panic(err) } tx := sdk.GetInstance().GetDBOperations().BeginTransaction() _, err = tx. Raw("UPDATE test.classes SET name = ?, student_num = ? WHERE id = ?", newClassName, newStudentNum, classID). Rows(0, 0) if err != nil { tx.RollbackTransaction() panic(err) } tx.CommitTransaction() tableRow, err := sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Where("id = ?", classID). Row() if err != nil { panic(err) } if tableRow["id"] != classID || tableRow["name"] != newClassName || tableRow["student_num"] != newStudentNum { panic("数据查询错误") } err = sdk.GetInstance().CreateSQL(sql, sqlSpec.ToMap()) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID}) if err != nil { panic(err) } err = sdk.GetInstance().DeleteSQL(sql) if err != nil { panic(err) } err = sdk.GetInstance().DeleteDataContainer(dataContainer) if err != nil { panic(err) } }