database

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ACCOUNT_COLLECTION      = "account"
	POST_COLLECTION         = "post"
	POST_LOG_COLLECTION     = "post_log"
	POST_VERBOSE_COLLECTION = "post_verbose"
	METADATA_COLLECTION     = "metadata"
	BAN_LIST_COLLECTION     = "ban_list"
	OAUTH_APP_COLLECTION    = "oauth_app"
)

Variables

View Source
var PresetMetadata = []Metadata{
	{
		Key:   "banner",
		Value: "投稿前请阅读投稿规则!",
	},
	{
		Key:   "popup_announcement",
		Value: "欢迎使用 Campux!",
	},
	{
		Key: "post_rules",
		Value: `[
			"投稿规则是数组",
			"每个元素是一个字符串"
		]`,
	},
	{
		Key: "services",
		Value: `[
			{
				"name": "服务名称",
				"description": "服务也是数组形式,会显示在服务tab",
				"link": "https://url.to.service",
				"toast": "点击时的提示",
				"emoji": "🗺️"
			}
		]`,
	},
	{
		Key:   "brand",
		Value: "Campux 这个是你的墙的名称",
	},
	{
		Key:   "beianhao",
		Value: "桂ICP备1145141919号-1",
	},
}

Functions

This section is empty.

Types

type AccountExpose

type AccountExpose struct {
	Uin       int64     `json:"uin" bson:"uin"`               // QQ号
	UserGroup UserGroup `json:"user_group" bson:"user_group"` // 用户组
	CreatedAt time.Time `json:"created_at" bson:"created_at"` // CST时间
	BanRecord []BanInfo `json:"ban_record" gorm:"-"`          // 封禁记录
}

type AccountPO

type AccountPO struct {
	Uin       int64     `json:"uin" bson:"uin"`                                                               // QQ号
	Pwd       string    `json:"pwd" bson:"pwd" gorm:"type:varchar(256);not null"`                             // 数据库存md5之后的密码
	CreatedAt time.Time `json:"created_at" bson:"created_at" gorm:"autoCreateTime"`                           // CST时间
	UserGroup UserGroup `json:"user_group" bson:"user_group" gorm:"type:varchar(32);not null;default:'user'"` // 用户
}

type BanInfo

type BanInfo struct {
	Uin       int64     `json:"uin" bson:"uin"`                                     // QQ号
	Op        int64     `json:"op" bson:"op"`                                       // 操作者QQ号
	Comment   string    `json:"comment" bson:"comment" gorm:"type:varchar(512)"`    // 备注
	StartTime time.Time `json:"start_time" bson:"start_time" gorm:"autoCreateTime"` // 开始时间
	EndTime   time.Time `json:"end_time" bson:"end_time"`                           // 结束时间
}

type BaseDBManager

type BaseDBManager interface {
	CheckMetadata() error
	AddAccount(acc *AccountPO) error
	GetAccountByUIN(uin int64) (*AccountPO, error)
	UpdatePassword(uin int64, pwd string) error
	GetAccounts(
		uin int64,
		userGroup UserGroup,
		timeOrder int,
		page, pageSize int,
	) ([]AccountExpose, int, error)
	BanAccount(banInfo BanInfo) error
	UnbanAccount(uin int64) error
	GetBanList(
		uin int64,
		onlyValid bool,
		timeOrder int,
		page, pageSize int,
	) ([]BanInfo, int, error)
	UpdateUserGroup(uin int64, userGroup UserGroup) error
	GetCurrentBanInfo(uin int64) (*BanInfo, error)
	CountPost() (int, error)
	GetMaxPostID() (int, error)
	AddPost(post *PostPO) (int, error)
	AddPostLog(log *PostLogPO) error
	GetPostLogs(postID int) ([]PostLogPO, error)
	GetPosts(
		uin int64,
		status PostStatus,
		timeOrder int,
		page, pageSize int,
	) ([]PostPO, int, error)
	GetPost(id int) (*PostPO, error)
	UpdatePostStatus(id int, status PostStatus) error
	SavePostVerbose(pv *PostVerbose) error
	GetMetadata(key string) (string, error)
	SetMetadata(key, value string) error
	GetMetadataList() ([]Metadata, error)
	AddOAuth2App(app *OAuthAppPO) error
	GetOAuth2App(clientID string) (*OAuthAppPO, error)
	GetOAuth2AppByName(name string) (*OAuthAppPO, error)
	GetOAuth2Apps() ([]OAuthAppPO, error)
	DeleteOAuth2App(clientID string) error
}

type Metadata

type Metadata struct {
	Key string `bson:"key" gorm:"type:varchar(256)" json:"key"`

	Value string `bson:"value" gorm:"type:varchar(2048)" json:"value"`
}

type MongoDBManager

type MongoDBManager struct {
	Client *mongo.Client

	PostLock *sync.Mutex
}

func NewMongoDBManager

func NewMongoDBManager() *MongoDBManager

func (*MongoDBManager) AddAccount

func (m *MongoDBManager) AddAccount(acc *AccountPO) error

func (*MongoDBManager) AddOAuth2App

func (m *MongoDBManager) AddOAuth2App(app *OAuthAppPO) error

func (*MongoDBManager) AddPost

func (m *MongoDBManager) AddPost(post *PostPO) (int, error)

func (*MongoDBManager) AddPostLog

func (m *MongoDBManager) AddPostLog(log *PostLogPO) error

func (*MongoDBManager) BanAccount

func (m *MongoDBManager) BanAccount(banInfo BanInfo) error

func (*MongoDBManager) CheckMetadata

func (m *MongoDBManager) CheckMetadata() error

检查所有元数据的key是否存在,不存在则插入预设的

func (*MongoDBManager) CountPost

func (m *MongoDBManager) CountPost() (int, error)

func (*MongoDBManager) DeleteOAuth2App

func (m *MongoDBManager) DeleteOAuth2App(clientID string) error

func (*MongoDBManager) GetAccountByUIN

func (m *MongoDBManager) GetAccountByUIN(uin int64) (*AccountPO, error)

func (*MongoDBManager) GetAccounts

func (m *MongoDBManager) GetAccounts(
	uin int64,
	userGroup UserGroup,
	timeOrder int,
	page, pageSize int,
) ([]AccountExpose, int, error)

func (*MongoDBManager) GetBanList

func (m *MongoDBManager) GetBanList(
	uin int64,
	onlyValid bool,
	timeOrder int,
	page, pageSize int,
) ([]BanInfo, int, error)

获取封禁记录

func (*MongoDBManager) GetCurrentBanInfo

func (m *MongoDBManager) GetCurrentBanInfo(uin int64) (*BanInfo, error)

func (*MongoDBManager) GetMaxPostID

func (m *MongoDBManager) GetMaxPostID() (int, error)

获取当前最大的post id

func (*MongoDBManager) GetMetadata

func (m *MongoDBManager) GetMetadata(key string) (string, error)

func (*MongoDBManager) GetMetadataList

func (m *MongoDBManager) GetMetadataList() ([]Metadata, error)

func (*MongoDBManager) GetOAuth2App

func (m *MongoDBManager) GetOAuth2App(clientID string) (*OAuthAppPO, error)

func (*MongoDBManager) GetOAuth2AppByName

func (m *MongoDBManager) GetOAuth2AppByName(name string) (*OAuthAppPO, error)

func (*MongoDBManager) GetOAuth2Apps

func (m *MongoDBManager) GetOAuth2Apps() ([]OAuthAppPO, error)

list

func (*MongoDBManager) GetPost

func (m *MongoDBManager) GetPost(id int) (*PostPO, error)

func (*MongoDBManager) GetPostLogs

func (m *MongoDBManager) GetPostLogs(postID int) ([]PostLogPO, error)

func (*MongoDBManager) GetPosts

func (m *MongoDBManager) GetPosts(
	uin int64,
	status PostStatus,
	timeOrder int,
	page, pageSize int,
) ([]PostPO, int, error)

func (*MongoDBManager) SavePostVerbose

func (m *MongoDBManager) SavePostVerbose(pv *PostVerbose) error

func (*MongoDBManager) SetMetadata

func (m *MongoDBManager) SetMetadata(key, value string) error

func (*MongoDBManager) UnbanAccount

func (m *MongoDBManager) UnbanAccount(uin int64) error

func (*MongoDBManager) UpdatePassword

func (m *MongoDBManager) UpdatePassword(uin int64, pwd string) error

func (*MongoDBManager) UpdatePostStatus

func (m *MongoDBManager) UpdatePostStatus(id int, status PostStatus) error

func (*MongoDBManager) UpdateUserGroup

func (m *MongoDBManager) UpdateUserGroup(uin int64, userGroup UserGroup) error

更改账户的用户组

type OAuthAppPO

type OAuthAppPO struct {
	Name         string    `json:"name" bson:"name" gorm:"type:varchar(256)"`                   // 应用名称
	Emoji        string    `json:"emoji" bson:"emoji" gorm:"type:varchar(16)"`                  // Emoji
	ClientID     string    `json:"client_id" bson:"client_id" gorm:"type:varchar(256)"`         // 客户端ID
	ClientSecret string    `json:"client_secret" bson:"client_secret" gorm:"type:varchar(256)"` // 客户端密钥
	CreatedAt    time.Time `json:"created_at" bson:"created_at" gorm:"autoCreateTime"`          // CST时间
}

type PostLogPO

type PostLogPO struct {
	PostID    int        `json:"post_id" bson:"post_id"`                             // 稿件ID
	Op        int64      `json:"op" bson:"op"`                                       // 操作者ID -1表示系统
	OldStat   PostStatus `json:"old_stat" bson:"old_stat" gorm:"type:varchar(32)"`   // 旧状态
	NewStat   PostStatus `json:"new_stat" bson:"new_stat" gorm:"type:varchar(32)"`   // 新状态
	Comment   string     `json:"comment" bson:"comment" gorm:"type:varchar(256)"`    // 备注
	CreatedAt time.Time  `json:"created_at" bson:"created_at" gorm:"autoCreateTime"` // CST时间
}

type PostPO

type PostPO struct {
	ID        int           `json:"id" bson:"id" gorm:"primary_key;auto_increment"`                                   // 稿件ID
	UUID      string        `json:"uuid" bson:"uuid" gorm:"type:varchar(256);unique"`                                 // UUID
	Uin       int64         `json:"uin" bson:"uin"`                                                                   // 作者QQ号
	Text      string        `json:"text" bson:"text" gorm:"type:varchar(2048);not null"`                              // 正文
	Images    util.StrArray `json:"images" bson:"images" gorm:"type:text"`                                            // 图片
	Anon      bool          `json:"anon" bson:"anon"`                                                                 // 是否匿名
	Status    PostStatus    `json:"status" bson:"status" gorm:"type:varchar(32);not null;default:'pending_approval'"` // 状态
	CreatedAt time.Time     `json:"created_at" bson:"created_at" gorm:"autoCreateTime"`                               // CST时间
}

type PostStatus

type PostStatus string
const (
	POST_STATUS_ANY              PostStatus = "any"              // 任何
	POST_STATUS_PENDING_APPROVAL PostStatus = "pending_approval" // 待审核
	POST_STATUS_APPROVED         PostStatus = "approved"         // 通过
	POST_STATUS_REJECTED         PostStatus = "rejected"         // 拒绝
	POST_STATUS_CANCELLED        PostStatus = "cancelled"        // 取消
	POST_STATUS_IN_QUEUE         PostStatus = "in_queue"         // 排队
	POST_STATUS_PUBLISHED        PostStatus = "published"        // 已发表
	POST_STATUS_FAILED           PostStatus = "failed"           // 失败
	POST_STATUS_PENDING_RECALL   PostStatus = "pending_recall"   // 待撤回
	POST_STATUS_RECALLED         PostStatus = "recalled"         // 已撤回
)

type PostVerbose

type PostVerbose struct {
	PostID    int          `json:"post_id" bson:"post_id"`                             // 稿件ID
	Key       string       `json:"key" bson:"key" gorm:"type:varchar(256)"`            // 多Bot场景下识别的Key
	Values    util.JSONMap `json:"values" bson:"values" gorm:"type:text"`              // 值
	CreatedAt time.Time    `json:"created_at" bson:"created_at" gorm:"autoCreateTime"` // CST时间
}

type ReviewOption

type ReviewOption string
const (
	REVIEW_OPTION_APPROVE ReviewOption = "approve"
	REVIEW_OPTION_REJECT  ReviewOption = "reject"
)

type SQLiteDBManager

type SQLiteDBManager struct {
	Client *gorm.DB

	PostLock *sync.Mutex
}

func NewSQLiteDBManager

func NewSQLiteDBManager() *SQLiteDBManager

func (*SQLiteDBManager) AddAccount

func (m *SQLiteDBManager) AddAccount(acc *AccountPO) error

func (*SQLiteDBManager) AddOAuth2App

func (m *SQLiteDBManager) AddOAuth2App(app *OAuthAppPO) error

func (*SQLiteDBManager) AddPost

func (m *SQLiteDBManager) AddPost(post *PostPO) (int, error)

func (*SQLiteDBManager) AddPostLog

func (m *SQLiteDBManager) AddPostLog(log *PostLogPO) error

func (*SQLiteDBManager) BanAccount

func (m *SQLiteDBManager) BanAccount(banInfo BanInfo) error

func (*SQLiteDBManager) CheckMetadata

func (m *SQLiteDBManager) CheckMetadata() error

检查所有元数据的key是否存在,不存在则插入预设的

func (*SQLiteDBManager) CountPost

func (m *SQLiteDBManager) CountPost() (int, error)

func (*SQLiteDBManager) DeleteOAuth2App

func (m *SQLiteDBManager) DeleteOAuth2App(clientID string) error

func (*SQLiteDBManager) GetAccountByUIN

func (m *SQLiteDBManager) GetAccountByUIN(uin int64) (*AccountPO, error)

func (*SQLiteDBManager) GetAccounts

func (m *SQLiteDBManager) GetAccounts(
	uin int64,
	userGroup UserGroup,
	timeOrder int,
	page, pageSize int,
) ([]AccountExpose, int, error)

func (*SQLiteDBManager) GetBanList

func (m *SQLiteDBManager) GetBanList(
	uin int64,
	onlyValid bool,
	timeOrder int,
	page, pageSize int,
) ([]BanInfo, int, error)

获取封禁记录

func (*SQLiteDBManager) GetCurrentBanInfo

func (m *SQLiteDBManager) GetCurrentBanInfo(uin int64) (*BanInfo, error)

func (*SQLiteDBManager) GetMaxPostID

func (m *SQLiteDBManager) GetMaxPostID() (int, error)

获取当前最大的post id

func (*SQLiteDBManager) GetMetadata

func (m *SQLiteDBManager) GetMetadata(key string) (string, error)

func (*SQLiteDBManager) GetMetadataList

func (m *SQLiteDBManager) GetMetadataList() ([]Metadata, error)

func (*SQLiteDBManager) GetOAuth2App

func (m *SQLiteDBManager) GetOAuth2App(clientID string) (*OAuthAppPO, error)

func (*SQLiteDBManager) GetOAuth2AppByName

func (m *SQLiteDBManager) GetOAuth2AppByName(name string) (*OAuthAppPO, error)

func (*SQLiteDBManager) GetOAuth2Apps

func (m *SQLiteDBManager) GetOAuth2Apps() ([]OAuthAppPO, error)

list

func (*SQLiteDBManager) GetPost

func (m *SQLiteDBManager) GetPost(id int) (*PostPO, error)

func (*SQLiteDBManager) GetPostLogs

func (m *SQLiteDBManager) GetPostLogs(postID int) ([]PostLogPO, error)

func (*SQLiteDBManager) GetPosts

func (m *SQLiteDBManager) GetPosts(
	uin int64,
	status PostStatus,
	timeOrder int,
	page, pageSize int,
) ([]PostPO, int, error)

func (*SQLiteDBManager) SavePostVerbose

func (m *SQLiteDBManager) SavePostVerbose(pv *PostVerbose) error

func (*SQLiteDBManager) SetMetadata

func (m *SQLiteDBManager) SetMetadata(key, value string) error

func (*SQLiteDBManager) UnbanAccount

func (m *SQLiteDBManager) UnbanAccount(uin int64) error

func (*SQLiteDBManager) UpdatePassword

func (m *SQLiteDBManager) UpdatePassword(uin int64, pwd string) error

func (*SQLiteDBManager) UpdatePostStatus

func (m *SQLiteDBManager) UpdatePostStatus(id int, status PostStatus) error

func (*SQLiteDBManager) UpdateUserGroup

func (m *SQLiteDBManager) UpdateUserGroup(uin int64, userGroup UserGroup) error

更改账户的用户组

type UserGroup

type UserGroup string
const (
	USER_GROUP_ANY    UserGroup = "any"
	USER_GROUP_ADMIN  UserGroup = "admin"
	USER_GROUP_MEMBER UserGroup = "member"
	USER_GROUP_USER   UserGroup = "user"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳