Skip to content

enorith/database

Repository files navigation

Database component for Enorith

Usage

package main

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/enorith/database"
	"fmt"
	"github.com/enorith/database/rithythm"
)


type User struct {
	rithythm.Model
}

func (u *User) GetTable() string {
	return "users"
}

func (u *User) Clone() rithythm.DataModel {
	return &User{}
}

func main()  {
    builder := rithythm.Hold(&User{}).Query().GroupBy("area_id").
        JoinWith("inner", "areas", func(clause *database.JoinClause) {
        clause.AndOn("area_id", "=", "areas.id")
        clause.AndWhereNotNull("area_id")
    }).AndWhereNest(func(builder *database.QueryBuilder) {
        builder.AndWhere("users.id", ">", 12)
    }).
        Select(database.Raw("count(users.id) as users_count"), "area_id", "areas.name").
        SortDesc("area_id")
    collection,_ := builder.Get()
    
    var (
        count int
        areaId int
        name string
    )
    
    defer collection.Close()
    
    for collection.NextAndScan(&count, &areaId, &name) {
        fmt.Println(count, areaId, name)
    }
}

About

Database component for Enorith

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages