repository

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

Repository 模式

import (
    "go-titan/repository"
)

func main() {
    repos := repository.New(
        repository.WithPostgre(
            DBName("testdb"),
            DBUser("titan"),
            DBPwd("titan"),
        ))
}

建模

titan 的默认使用gorm实现Repository,模型的声明请参考 GORM的声明模型中的内容

由于是通用模型所以对特殊的字段类型建议使用gorm.io/datatypes提供的数据类型。

type ComposeData struct {
	ID     string `gorm:"primaryKey;"`
	Secret []byte
	Tags  []string `gorm:"type:text[]"`
	Metas datatypes.JSON
}

新增

testUser := &UserTest{
		Name:  gofakeit.UserName(),
		Email: gofakeit.Email(),
	}
err = repos.Add(testUser)
require.NoError(t, err)

删除

查询

更新

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEntityCannotBeNull = errors.New("实体对象不能为空")
)

Functions

func WithConfig

func WithConfig(conf *config.DBConfig) *gorm.DB

func WithMySQL

func WithMySQL(opts ...Option) *gorm.DB

func WithPostgre

func WithPostgre(opts ...Option) *gorm.DB

func WithSQLite

func WithSQLite(fileName string) *gorm.DB

Types

type DataWorks

type DataWorks interface {
	// Repos 返回一个通用的可访问存储
	Repos() Repository

	// Setup 创建数据库结构
	Setup() error

	// Init 用于初始化数据库
	Init() error

	// Reset 重置所有相关数据至初始状态
	Reset() error
}

DataWorks 统一数据存储对象(UnitOfWorks)

type Option

type Option func(*Options)

func Database

func Database(name string) Option

func Host

func Host(host string) Option

func Password

func Password(pwd string) Option

func Port

func Port(port int) Option

func UserName

func UserName(user string) Option

type Options

type Options struct {
	Name     string `mapstructure:"name" yaml:"name"`
	Database string `mapstructure:"database" yaml:"database"`
	Host     string `mapstructure:"host" yaml:"host"`
	Port     int    `mapstructure:"port" yaml:"port"`
	User     string `mapstructure:"user" yaml:"user"`
	Password string `mapstructure:"password" yaml:"password"`
}

func (*Options) Conn

func (opts *Options) Conn() (*sql.DB, error)

func (*Options) DSN

func (opts *Options) DSN() string

type Repository

type Repository interface {
	Limit(limit int) Repository

	Skip(skip int) Repository
	// Add 增加新的数据对象
	Add(model interface{}) error
	// Update 更新数据对象
	Update(model interface{}) error
	// Delete 删除指定的数据对象
	Delete(model interface{}, params ...interface{}) error
	// Get 获取指定主键值相同对象
	// model 为返回的对象, params为实体的ID值或值的列表
	Get(model interface{}, params ...interface{}) error
	// All 获取全部实体对象
	All(model interface{}) (int, error)
	// Query 查找符合指定条件的实体对象
	Query(model interface{}, condition string, params ...interface{}) (int, error)
	// Count 统计表内有多少个对象
	Count(model interface{}) (int, error)
	// Exists 返回符合条件的实体对象是否存在
	Exists(model interface{}, params ...interface{}) (bool, error)
	// Raw 执行SQL语句并返回结果集
	Raw(model interface{}, sql string, params ...interface{}) error
	// Exec 执行原生的SQL语句,不会返回执行结果
	Exec(sql string, params ...interface{}) error
	// Setup 初始化数据表
	Setup(model ...interface{}) error
	// Clear 清空数据表
	Clear(model ...interface{}) error
	// DB 返回仓库使用的数据库实例
	DB() interface{}
}

Repository 基于模式定义了通用的数据访问接口,用以解决一般的CRUD问题

func New

func New(db *gorm.DB) Repository

Jump to

Keyboard shortcuts

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