gmodel

package module
v0.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2024 License: MIT Imports: 12 Imported by: 2

README

GModel

GModel are parts of MVC, meaning for model and running for Go. the go model learning from php framework models, and Golang Features to operate databases for sql easily.

HelloWorld!

import package

go get github.com/lingdor/gmodel

gsql package demos:

where := gsql.group(gsql.Equal(TbUserFields.Id, 123).And(gsql.Gt(TbUserFields.Id, 5))).Or(gsql.Like(TbUserFields.Name, "%tom%"))
gmodel.QueryArr(tx, gsql.Select().From("user").Where(where).Last(gsql.Limit(1, 2)))
gmodel.QueryMap(tx, gsql.Select("id",""user_name","age").From("user").Where(gsql.Eq("id",1)).OrderBy(gsql.Asc("id")))
gmodel.QueryArrRows(tx, gsql.Select().From(TbUserSchema).Limit(10))

//Join SQLs:
gmodel.QueryMap(tx,conn,gsql.Select("u.id","u.name").from("user1")
    .LeftJoin(gsql.As("school","s")).On(gsql.Eq("s.id",gsql.Sql("u.school_id"))).Where(gsql.Eq("u.age",12))

// update Sqls:
gmodel.Execute(ctx,conn,gsql.Update("user").SetMap(map[string]any{
    "user_name": 'user_updated',
    "age": 22,
}.Where(gmodel.Eq("id",1)).Last(gsql.Limit(1));

gmodel.Execute(ctx,conn,gsql.Update("user").Set("user_name","xx").Set("age",80).Where(gsql.Eq("id",1)).Last(gsql.Limit(1));

//insert gsql
gmodel.Execute(ctx,conn,gsql.Insert("user").MapValues(maps map[string]string{
                                                  "user_name":"user1",
                                                  "age":11,
                                                  }).
                                                  MapValues(maps map[string]string{
                                                    "user_name":"user2",
                                                    "age":12,
                                                    }))
}
gmodel.Execute(ctx,conn,gsql.Insert("user","user_name","age").Values("uname1",12).Values("user2",19);
ivals := map[string]any{
"user_name":   "lily",
"age": 12,
}
gmodel.Execute(ctx, conn, gsql.Insert("user").valuesMap(vals))

orm package demos:

 //insert orm
gmodel.Execute(ctx,conn,orm.Insert(UserSchema).ValuesMap(map[Field]any{
    UserSchema.UserName:"user1",
    UserSchema.Age:11,
})
gmodel.Execute(ctx,conn,orm.Insert(Tbuser,UserSchema.UserName,UserSchema.Age).Values("uname1",12).Values("user2",19);
//insert into select:
gmodel.Execute(ctx,conn,orm.Insert(UserSchema).Select().From(UserSchema).Where(orm.Eq(UserSchema.Id,1))
// insert set:
gmodel.Execute(ctx,conn,gsql.Insert(UserSchema).Set(UserSchema.UserName,"testuser").Set(UserSchema.Age,16));

todo: gentools read/write database config load

Documentation

Overview

Package gmodel is a sql operate module, the inspiration from php mvc frameworks,such as codeigniter. sure,and take some go features. demo to see: github.com/lingdor/gmodel/_example

Index

Constants

View Source
const (
	OptQueryNoType = iota
	OptLogSql
)

QueryOptNoType If true, will be []byte forever when select fields Mybe if you use the MagicArray, the type translate is unnecessary

View Source
const Bit = "bit"
View Source
const Enum = "enum"
View Source
const Int = "varchar"
View Source
const TinyInt = "tinyint"
View Source
const VarChar = "int"

Variables

View Source
var All = common.All

Functions

func Execute

func Execute(handler DBHandler, toSql ToSql) (sql.Result, error)

Execute some sql like update,insert

func ExecuteContext

func ExecuteContext(ctx context.Context, db DBHandler, toSql ToSql) (sql.Result, error)

ExecuteContext some sql like update,insert with context

func GetToSqlConfig added in v0.0.8

func GetToSqlConfig(db DBHandler) common.ToSqlConfig

func QueryArr

func QueryArr(db DBHandler, toSql ToSql) (arr array.MagicArray, err error)

func QueryArrContext

func QueryArrContext(ctx context.Context, db DBHandler, toSql ToSql) (arr array.MagicArray, err error)

func QueryArrRows

func QueryArrRows(db DBHandler, toSql ToSql) (arr array.MagicArray, err error)

func QueryArrRowsContext

func QueryArrRowsContext(ctx context.Context, db DBHandler, toSql ToSql) (arr array.MagicArray, err error)

func QueryEntitiesContext added in v0.0.8

func QueryEntitiesContext[T any](ctx context.Context, db DBHandler, toSql ToSql) (entities []T, err error)

func QueryMap

func QueryMap(db DBHandler, toSql ToSql) (ret map[string]any, err error)

func QueryMapContext

func QueryMapContext(ctx context.Context, db DBHandler, toSql ToSql) (ret map[string]any, err error)

todo 1. tosql input tosqlconfig 2. struct get scan pointers

func QueryMapRows

func QueryMapRows(db DBHandler, toSql ToSql) (ret []map[string]any, err error)

func QueryMapRowsContext

func QueryMapRowsContext(ctx context.Context, db DBHandler, toSql ToSql) (ret []map[string]any, err error)

func QueryVal

func QueryVal(db DBHandler, toSql ToSql) (val array.ZVal, err error)

func QueryValContext

func QueryValContext(ctx context.Context, db DBHandler, toSql ToSql) (val array.ZVal, err error)

func RegisterToSqlConfigLoader added in v0.0.8

func RegisterToSqlConfigLoader(loader func(db DBHandler) common.ToSqlConfig)

Types

type DBHandler

type DBHandler interface {
	ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
	QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
	Driver() driver.Driver
}

type DefaultScanParam added in v0.0.12

type DefaultScanParam[T any] struct {
	// contains filtered or unexported fields
}

func (*DefaultScanParam[T]) GetPointer added in v0.0.12

func (d *DefaultScanParam[T]) GetPointer() any

func (*DefaultScanParam[T]) GetVal added in v0.0.12

func (d *DefaultScanParam[T]) GetVal() any

type EntityFieldHandler added in v0.0.8

type EntityFieldHandler = common.EntityFieldHandler

type Field

type Field = common.Field

type FieldInfo

type FieldInfo struct {
	// contains filtered or unexported fields
}

func NewField

func NewField(name string, fieldType string, isNullable, isPK bool) *FieldInfo

func (*FieldInfo) As

func (f *FieldInfo) As(name string) ToSql

func (*FieldInfo) Check

func (f *FieldInfo) Check(any) bool

func (*FieldInfo) IsNullable

func (f *FieldInfo) IsNullable() bool

func (*FieldInfo) IsPK

func (f *FieldInfo) IsPK() bool

func (*FieldInfo) Name

func (f *FieldInfo) Name() string

func (*FieldInfo) ToSql

func (f *FieldInfo) ToSql(config common.ToSqlConfig) (string, []any)

func (*FieldInfo) Type

func (f *FieldInfo) Type() string

type Fields

type Fields []Field

func (Fields) ToSql

func (f Fields) ToSql(config common.ToSqlConfig) (string, []any)

type ScanParam added in v0.0.12

type ScanParam interface {
	GetPointer() any
	GetVal() any
}

type Table

type Table = common.Table

type ToSql

type ToSql = common.ToSql

func AllSchemaFields added in v0.0.8

func AllSchemaFields(schema any) ToSql

type ToSqlConfig added in v0.0.8

type ToSqlConfig = common.ToSqlConfig

type TypeSchemaFields added in v0.0.8

type TypeSchemaFields []ToSql

func (TypeSchemaFields) ToSql added in v0.0.8

func (t TypeSchemaFields) ToSql(config ToSqlConfig) (string, []any)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL