easygorm

package module
v0.0.0-...-5267f3f Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2020 License: Apache-2.0 Imports: 16 Imported by: 0

README

EasyGorm

Build Status Code Coverage Go Report Card GoDoc Licenses

项目简介

Iris 项目下使用 gorm 简单实现 curd 功能。


使用说明

如果需要 casbin 复制 rbac_model.conf 文件到项目目录下. 如果不需要 casbin ,CasbinModelPath 设置为 ""。


使用

go get -u github.com/snowlyg/easygorm@main

初始化配置

package main

import (
	"github.com/snowlyg/easygorm"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
)
func main(){
	easygorm.Init(&easygorm.Config{
		GormConfig: &gorm.Config{
			NamingStrategy: schema.NamingStrategy{
				TablePrefix:   "iris_", // 表名前缀,`User` 的表名应该是 `t_users`
				SingularTable: false,   // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `t_user`
			},
		},
		Adapter:         "mysql", // 类型 mysql postgres sqlite3
		Name:            "easygorm",
		Username:        "root",              // 用户名
		Pwd:             "123456",            // 密码
		Host:            "127.0.0.1",         // 地址
		Port:            3306,                // 端口
		CasbinModelPath: "./rbac_model.conf", // casbin 模型规则路径,如果不用 casbin 设置为 ""。
	})
}


列表查询

_example/pagination

  • 分页

http://localhost/users?limit=10&page=1&sort=desc&orderBy=create_at&name=snowlyg:like

  • 不分页

http://localhost/users?limit=-1&page=-1&sort=desc&orderBy=create_at&name=snowlyg:like

  • 分页查询,带上关联数据

http://localhost/users?limit=10&page=1&sort=desc&orderBy=create_at&name=snowlyg:like&relation=roles,profile

  • 分页查询,查询指定返回字段

http://localhost/users?limit=10&page=1&sort=desc&orderBy=create_at&name=snowlyg:like&relation=roles,profile&field=id,name

单个查询

_example/getone

  • 查询

http://localhost/users?name=snowlyg:like

  • 查询带上关联数据

http://localhost/users?name=snowlyg:like&relation=roles,profile

  • 查询指定返回字段

http://localhost/users?name=snowlyg:like&relation=roles,profile&field=id,name

创建

_example/create

更新

_example/update

删除

_example/delete

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func All

func All(model, data interface{}, s *Search) error

All 批量查询

func Count

func Count(model interface{}, field string) (int64, error)

Count field

func Create

func Create(model interface{}) error

Create 新建

func Delete

func Delete(model interface{}, s *Search) error

Delete 删除

func DeleteById

func DeleteById(model interface{}, id uint) error

Delete 通过 id 删除

func FindById

func FindById(model interface{}, id uint) error

FindById

func First

func First(model interface{}, search *Search) error

First

func Found

func Found(s *Search) *gorm.DB

Found 查询条件

func FoundByWhereScope

func FoundByWhereScope(fields []*Field) func(db *gorm.DB) *gorm.DB

FoundByWhereScope 查询条件

func GetPermissionsForUser

func GetPermissionsForUser(uid uint) [][]string

GetPermissionsForUser 获取角色权限

func GetRolesForUser

func GetRolesForUser(uid uint) []string

GetRolesForUser 获取角色

func GetSelects

func GetSelects(field string) []string

GetSelects 字段过滤 []string

func Init

func Init(c *Config)

func IsNotFound

func IsNotFound(err error) bool

IsNotFound 判断是否是查询不存在错误

func Migrate

func Migrate(models []interface{}) error

Migrate 迁移数据表

func Paginate

func Paginate(model, data interface{}, s *Search) (int64, error)

Paginate 分页查询

func PaginateScope

func PaginateScope(page, pageSize int) func(db *gorm.DB) *gorm.DB

PaginateScope 分页

func RelationScope

func RelationScope(relates []*Relate) func(db *gorm.DB) *gorm.DB

RelationScope 加载关联关系

func Save

func Save(model interface{}) error

Save 保存

func Update

func Update(v, d interface{}, fileds []interface{}, id uint) error

Update 更新

func UpdateWithFilde

func UpdateWithFilde(v interface{}, filed map[string]interface{}, id uint) error

UpdateWithFilde 更新

Types

type Config

type Config struct {
	GormConfig        *gorm.Config
	Adapter           string        // 类型
	Name              string        // 名称
	Username          string        // 用户名
	Pwd               string        // 密码
	Host              string        // 地址
	Port              int64         // 端口
	CasbinModelPath   string        // casbin 模型规则路径
	SqlitePath        string        // sqlite 模型路径
	Models            []interface{} // 模型数据
	CasbinTablePrefix string
}

Config 设置属性

type EasyGorm

type EasyGorm struct {
	Conn     string
	Db       *gorm.DB
	Enforcer *casbin.Enforcer
	*Config
}

EasyGorm 简单便捷的使用 gorm

var Egm *EasyGorm

type Field

type Field struct {
	Condition string      `json:"condition"`
	Key       string      `json:"key"`
	Value     interface{} `json:"value"` // int  []int uint  []uint string []string
}

Field 查询字段结构体

func GetField

func GetField(key string, search interface{}) *Field

GetField 转换前端查询关系为 *Field

func GetFields

func GetFields(searchs map[string]interface{}) []*Field

GetFields 转换前端查询关系为 []*Field

type Relate

type Relate struct {
	Value string
	Func  interface{}
}

Relate 关联关系

func GetRelations

func GetRelations(relation string, fs map[string]interface{}) []*Relate

GetRelations 转换前端获取关联关系为 []*Relate

type Search struct {
	Selects   []string  `json:"selects"`
	Fields    []*Field  `json:"fields"`
	Relations []*Relate `json:"relations"`
	OrderBy   string    `json:"order_by"`
	Sort      string    `json:"sort"`
	Limit     int       `json:"limit"`
	Offset    int       `json:"offset"`
}

Search 查询参数结构体

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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