model

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: May 30, 2020 License: MIT Imports: 10 Imported by: 0

README

Model

Model层,或者叫 Entity,实体层,用于存放我们的实体类,与数据库中的属性值基本保持一致。

数据库约定

这里默认使用 MySQL 数据库,尽量使用 InnoDB 作为存储引擎。

相关表采用统一前缀

比如和用户相关的,使用 user_ 作为表前缀:

user            // 用户表
user_follow     // 用户关注表
user_fans       // 用户粉丝表
user_stat       // 用户统计表
统一字段名

一个表中需要包含的三大字段:主键(id),创建时间(created_at),更新时间(updated_at)
如果需要用户id,一般用user_id即可。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetDB

func GetDB() *gorm.DB

GetDB 返回默认的数据库

func GetDefaultDB added in v1.0.3

func GetDefaultDB() *gorm.DB

GetDefaultDB 获取默认数据库示例

func GetDockerDB

func GetDockerDB() *gorm.DB

GetDockerDB 获取docker数据库

func InitDefaultDB added in v1.0.3

func InitDefaultDB() *gorm.DB

InitDefaultDB used for cli

func InitDockerDB

func InitDockerDB() *gorm.DB

InitDockerDB 初始化一个docker数据库

func WhereBuild

func WhereBuild(where map[string]interface{}) (whereSQL string, vals []interface{}, err error)

WhereBuild sql build where see: https://github.com/jinzhu/gorm/issues/2055

Types

type Database

type Database struct {
	Default *gorm.DB
	Docker  *gorm.DB
}

Database 定义现有的数据库

var DB *Database

DB 数据库全局变量

func (*Database) Close

func (db *Database) Close()

Close 关闭数据库链接

func (*Database) Init

func (db *Database) Init()

Init 初始化数据库

type NullType

type NullType byte

NullType 空字节类型

const (

	// IsNull the same as `is null`
	IsNull NullType
	// IsNotNull the same as `is not null`
	IsNotNull
)

type Token

type Token struct {
	Token string `json:"token"`
}

Token represents a JSON web token.

type UserFansModel added in v1.0.5

type UserFansModel struct {
	ID          uint64    `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"-"`
	FollowerUID uint64    `gorm:"column:follower_uid" json:"follower_uid"`
	Status      int       `gorm:"column:status" json:"status"`
	UserID      uint64    `gorm:"column:user_id" json:"user_id"`
	CreatedAt   time.Time `gorm:"column:created_at" json:"-"`
	UpdatedAt   time.Time `gorm:"column:updated_at" json:"-"`
}

UserFansModel 粉丝表

func (*UserFansModel) TableName added in v1.0.5

func (u *UserFansModel) TableName() string

TableName sets the insert table name for this struct type

type UserFollow added in v1.0.5

type UserFollow struct {
	FollowNum int `json:"follow_num"` // 关注数
	FansNum   int `json:"fans_num"`   // 粉丝数
	IsFollow  int `json:"is_follow"`  // 是否关注 1:是 0:否
	IsFans    int `json:"is_fans"`    // 是否是粉丝 1:是 0:否
}

UserFollow 关注

type UserFollowModel added in v1.0.5

type UserFollowModel struct {
	ID          uint64    `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"-"`
	FollowedUID uint64    `gorm:"column:followed_uid" json:"followed_uid"`
	Status      int       `gorm:"column:status" json:"status"`
	UserID      uint64    `gorm:"column:user_id" json:"user_id"`
	CreatedAt   time.Time `gorm:"column:created_at" json:"-"`
	UpdatedAt   time.Time `gorm:"column:updated_at" json:"-"`
}

UserFollowModel 关注表

func (*UserFollowModel) TableName added in v1.0.5

func (u *UserFollowModel) TableName() string

TableName sets the insert table name for this struct type

type UserInfo

type UserInfo struct {
	ID         uint64      `json:"id" example:"1"`
	Username   string      `json:"username" example:"张三"`
	Avatar     string      `json:"avatar"`
	Sex        int         `json:"sex"`
	UserFollow *UserFollow `json:"user_follow"`
}

UserInfo 对外暴露的结构体

type UserList

type UserList struct {
	Lock  *sync.Mutex
	IDMap map[uint64]*UserInfo
}

UserList 用户列表结构体

type UserModel

type UserModel struct {
	ID        uint64    `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"-"`
	Username  string    `json:"username" gorm:"column:username;not null" binding:"required" validate:"min=1,max=32"`
	Password  string    `json:"password" gorm:"column:password;not null" binding:"required" validate:"min=5,max=128"`
	Phone     int       `gorm:"column:phone" json:"phone"`
	Email     string    `gorm:"column:email" json:"email"`
	Avatar    string    `gorm:"column:avatar" json:"avatar"`
	Sex       int       `gorm:"column:sex" json:"sex"`
	CreatedAt time.Time `gorm:"column:created_at" json:"-"`
	UpdatedAt time.Time `gorm:"column:updated_at" json:"-"`
}

UserModel User represents a registered user.

func (*UserModel) Compare

func (u *UserModel) Compare(pwd string) (err error)

Compare with the plain text password. Returns true if it's the same as the encrypted one (in the `User` struct).

func (*UserModel) Encrypt

func (u *UserModel) Encrypt() (err error)

Encrypt the user password.

func (*UserModel) TableName

func (u *UserModel) TableName() string

TableName 表名

func (*UserModel) Validate

func (u *UserModel) Validate() error

Validate the fields.

type UserStatModel added in v1.0.5

type UserStatModel struct {
	ID            uint64    `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"-"`
	UserID        uint64    `gorm:"column:user_id;not null" json:"user_id" binding:"required"`
	FollowCount   int       `gorm:"column:follow_count" json:"follow_count"`
	FollowerCount int       `gorm:"column:follower_count" json:"follower_count"`
	CreatedAt     time.Time `gorm:"column:created_at" json:"-"`
	UpdatedAt     time.Time `gorm:"column:updated_at" json:"-"`
}

UserStatModel 用户数据统计表

func (*UserStatModel) TableName added in v1.0.5

func (u *UserStatModel) TableName() string

TableName 表名

Jump to

Keyboard shortcuts

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