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() { classID1 := strutils.SimpleUUID() className1 := strutils.SimpleUUID() studentNum1 := rand.Int31n(100) newClassName1 := strutils.SimpleUUID() newStudentNum1 := rand.Int31n(100) classID2 := strutils.SimpleUUID() className2 := strutils.SimpleUUID() studentNum2 := 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": classID1, "name": className1, "student_num": studentNum1, }) if err != nil { panic(err) } err = sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Where("id = ?", classID1). Delete() if err != nil { panic(err) } err = sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Create(map[string]any{ "id": classID1, "name": className1, "student_num": studentNum1, }) if err != nil { panic(err) } err = sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Create(map[string]any{ "id": classID2, "name": className2, "student_num": studentNum2, }) if err != nil { panic(err) } tx := sdk.GetInstance().GetDBOperations().BeginTransaction() _, err = tx. Raw("UPDATE test.classes SET name = ?, student_num = ? WHERE id = ?", newClassName1, newStudentNum1, classID1). Rows(0, 0) if err != nil { tx.RollbackTransaction() panic(err) } tx.CommitTransaction() tableRow, err := sdk.GetInstance().GetDBOperations().NewSession(). Table("test.classes"). Where("id = ?", classID1). Row() if err != nil { panic(err) } if tableRow["id"] != classID1 || tableRow["name"] != newClassName1 || tableRow["student_num"] != newStudentNum1 { panic("数据查询错误") } tableRows, err := sdk.GetInstance().GetDBOperations().NewSession(). Raw("SELECT * FROM test.classes LIMIT 1 OFFSET 1"). Rows(0, 0) if err != nil { panic(err) } for _, tableRow := range tableRows { if tableRow["id"] == classID1 { if tableRow["name"] != newClassName1 || tableRow["student_num"] != newStudentNum1 { panic("数据查询错误") } } else { if tableRow["name"] != className2 || tableRow["student_num"] != studentNum2 { panic("数据查询错误") } } } err = sdk.GetInstance().CreateSQL(sql, sqlSpec.ToMap()) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID1}) 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) } }