lj-wsdj 2024-08-06 10:58:54 +08:00
parent d6927858df
commit d70fd72082
2 changed files with 51 additions and 34 deletions

View File

@ -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) {

View File

@ -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)
}