diff --git a/db/db.go b/db/db.go index 5030b48..a000841 100644 --- a/db/db.go +++ b/db/db.go @@ -36,10 +36,16 @@ func (s *SqlBuilder[T]) Clear() { s.Opts = Options{} } -func (s *SqlBuilder[T]) SetSchema(schema string) { +func (s *SqlBuilder[T]) SetSchema(schema string) error { if s.Driver == util.DriverOracle { - tyoracle.DB().Exec(fmt.Sprintf("ALTER SESSION SET CURRENT_SCHEMA = %s", schema), nil) + err := tyoracle.DB().DDL(fmt.Sprintf("ALTER SESSION SET CURRENT_SCHEMA = %s", schema)) + if err != nil { + return err + } + } else { + return fmt.Errorf("only support oracle") } + return nil } func (s *SqlBuilder[T]) SetDriver(driver string) { diff --git a/main_test.go b/main_test.go index 84bbb57..31a2c58 100644 --- a/main_test.go +++ b/main_test.go @@ -48,7 +48,29 @@ func (p *Page) SetPageSize(pageSize int) { p.PageSize = pageSize } -func TestMain(m *testing.M) { +func TestOracle(t *testing.T) { + var err error + type Employye struct { + EmployeeId int `json:"employee_id"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + Email string `json:"email"` + Rn int + } + var data []Employye + sqlb := OracleSqlBuilder() + err = sqlb.SetSchema("HR") + fmt.Println(err) + sqls := `select employee_id,first_name,last_name,email from employees` + sqlb.Sql = sqls + page := Page{PageIndex: 1, PageSize: 10} + err = sqlb.PaginateBySql(&data, &page) + page.Data = &data + fmt.Println(err, page.Data) +} + +func TestMysql(t *testing.T) { + var err error type PreliminaryProcedureResponse struct { ProjectId int `json:"project_id"` InitiationTime time.Time `json:"initiation_time" export:"x:1,y:2"` @@ -62,40 +84,29 @@ func TestMain(m *testing.M) { HandlingNum int `json:"handling_num" export:"x:9,y:2"` HandledNum int `json:"handled_num" export:"x:10,y:2"` } - type Employye struct { - EmployeeId int `json:"employee_id"` - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - Email string `json:"email"` - Rn int + var data []PreliminaryProcedureResponse + company_id := 1 + sqlb := DefaultSqlBuilder() + sqls := `select t1.autoseq,max(t1.establishment_time),max(t1.number),max(t1.name),max(t2.name) as project_unit,max(t3.name) as project_type, + count(distinct t6.autoseq) all_num, + count(distinct case t6.state when 1 then t6.autoseq end) not_handle_num, + count(distinct case t6.state when 2 then t6.autoseq end) no_handle_num, + count(distinct case t6.state when 3 then t6.autoseq end) handling_num, + count(distinct case t6.state when 4 then t6.autoseq end) handled_num + from tproject_info t1 + inner join tcompany t2 on t1.investor_id = t2.autoseq and t2.del = 0 @c + left join tinvestment_type t3 on t1.industry_category_id = t3.autoseq and t3.del = 0 + left join tpreliminary_procedures t6 on t1.autoseq = t6.project_id + where t1.del = 0 @c @c @c @c @c1 + @g` + sqlb.SetSql(sqls) + if company_id != 0 { + sqlb.InsertConditions("@c1", "t2.autoseq = ?", company_id) } - // var data []PreliminaryProcedureResponse - var data []Employye - // company_id := 1 - // sqlb := DefaultSqlBuilder() - sqlb := OracleSqlBuilder() - sqlb.SetSchema("HR") - // sqls := `select t1.autoseq,max(t1.establishment_time),max(t1.number),max(t1.name),max(t2.name) as project_unit,max(t3.name) as project_type, - // count(distinct t6.autoseq) all_num, - // count(distinct case t6.state when 1 then t6.autoseq end) not_handle_num, - // count(distinct case t6.state when 2 then t6.autoseq end) no_handle_num, - // count(distinct case t6.state when 3 then t6.autoseq end) handling_num, - // count(distinct case t6.state when 4 then t6.autoseq end) handled_num - // from tproject_info t1 - // inner join tcompany t2 on t1.investor_id = t2.autoseq and t2.del = 0 @c - // left join tinvestment_type t3 on t1.industry_category_id = t3.autoseq and t3.del = 0 - // left join tpreliminary_procedures t6 on t1.autoseq = t6.project_id - // where t1.del = 0 @c @c @c @c @c1 - // @g` - sqls := `select employee_id,first_name,last_name,email from employees` - sqlb.Sql = sqls - // if company_id != 0 { - // sqlb.InsertConditions("@c1", "t2.autoseq = ?", company_id) - // } - // sqlb.Groups("group by t1.autoseq") - var err error + sqlb.Groups("group by t1.autoseq") page := Page{PageIndex: 1, PageSize: 10} err = sqlb.PaginateBySql(&data, &page) page.Data = &data fmt.Println(err, page.Data) + }