database

package
v0.0.0-...-453d458 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KeySize         = 16
	NonceSize       = 12
	BcryptCost      = 15 // 根据服务器运算速度而定, 由于我这个是本地程序, 因此设大一点
	DefaultPassword = "abc123"
)

Variables

View Source
var (
	ErrWrongPassword = errors.New("wrong password (密碼錯誤)")
)

Functions

This section is empty.

Types

type Base64String

type Base64String = string

type Bucket

type Bucket = model.Bucket

type BucketStatus

type BucketStatus = model.BucketStatus

type DB

type DB struct {
	DB         *sql.DB
	Path       string // 数据库的路径
	IsBackup   bool
	FilesLimit int64
	// contains filtered or unexported fields
}

func OpenDB

func OpenDB(dbPath string, projCfg *Project) (*DB, error)

func (*DB) AllBucketsStatus

func (db *DB) AllBucketsStatus() (statusList []BucketStatus, err error)

AllBucketsStatus 根据 db.IsLoggedIn 選擇获取公开仓库或全部仓库的狀態

func (*DB) AutoGetKeywords

func (db *DB) AutoGetKeywords() ([]string, error)

func (*DB) BucketExists

func (db *DB) BucketExists(name string) (bool, error)

func (*DB) ChangePassword

func (db *DB) ChangePassword(oldPwd, newPwd string) (HexString, error)

func (*DB) CheckSameChecksum

func (db *DB) CheckSameChecksum(file *File) error

有相同内容的檔案时返回 error(相同内容的檔案已存在), 无相同内容的檔案则返回 nil 或其他错误.

func (*DB) CheckSameFilename

func (db *DB) CheckSameFilename(name string) error

有同名檔案时返回 ErrSameNameFiles, 无同名檔案则返回 nil 或其他错误.

func (*DB) CheckSameFiles

func (db *DB) CheckSameFiles(files []*File) (allErr error)

CheckSameFiles 检查有无同名/相同内容的檔案, 发现相同内容的檔案时, 记录全部重复檔案后再汇总返回错误, 但发现同名檔案时, 则立即返回错误 (因为前端需要对同名檔案进行逐个处理).

func (*DB) DecryptFile

func (db *DB) DecryptFile(filePath string) ([]byte, error)

func (*DB) DecryptSaveFile

func (db *DB) DecryptSaveFile(srcPath, dstPath string, perm fs.FileMode) error

DecryptSaveFile 读取 srcPath 的文件, 解密后保存到 dstPath.

func (*DB) DeleteBucket

func (db *DB) DeleteBucket(bucketID int64) error

func (*DB) DeleteFile

func (db *DB) DeleteFile(bucketsDir, tempDir, thumbPath string, file *File) error

DeleteFile 刪除檔案, 包括從數據庫中刪除和從硬碟中刪除.

func (*DB) EncryptFile

func (db *DB) EncryptFile(srcPath, dstPath string, perm fs.FileMode) error

EncryptFile 读取 srcPath 的文件, 加密后保存到 dstPath.

func (*DB) Exec

func (db *DB) Exec(query string, args ...any) (err error)

func (*DB) GetAllBuckets

func (db *DB) GetAllBuckets() ([]*Bucket, error)

func (*DB) GetAllFiles

func (db *DB) GetAllFiles() (files []*File, err error)

TODO: 要刪除, 使用該函數的地方改為 iterator

func (*DB) GetBucket

func (db *DB) GetBucket(id int64) (Bucket, error)

func (*DB) GetBucketByName

func (db *DB) GetBucketByName(name string) (Bucket, error)

func (*DB) GetDamagedFiles

func (db *DB) GetDamagedFiles() ([]*FilePlus, error)

func (*DB) GetFileByChecksum

func (db *DB) GetFileByChecksum(checksum string) (File, error)

func (*DB) GetFileByID

func (db *DB) GetFileByID(id int64) (File, error)

func (*DB) GetFileByName

func (db *DB) GetFileByName(name string) (File, error)

func (*DB) GetFilePlus

func (db *DB) GetFilePlus(id int64) (file FilePlus, err error)

func (*DB) GetFilePlusByName

func (db *DB) GetFilePlusByName(name string) (file FilePlus, err error)

func (*DB) GetFilesInBucket

func (db *DB) GetFilesInBucket(id int64, utime string) (files []*FilePlus, err error)

func (*DB) GetFilesLimit

func (db *DB) GetFilesLimit(sortBy, utime string) (files []*FilePlus, err error)

func (*DB) GetFilesNeedCheck

func (db *DB) GetFilesNeedCheck(checkInterval int64) ([]*File, error)

GetFilesNeedCheck 获取需要检查的文件, checkInterval 的单位是秒.

func (*DB) GetInt1

func (db *DB) GetInt1(query string, arg ...any) (int64, error)

GetInt1 gets one Integer value from the database.

func (*DB) GetPicsInBucket

func (db *DB) GetPicsInBucket(id int64, utime string) (files []*FilePlus, err error)

func (*DB) GetPicsLimit

func (db *DB) GetPicsLimit(utime string) (files []*FilePlus, err error)

func (*DB) GetProjStat

func (db *DB) GetProjStat(projCfg *Project) (ProjectStatus, error)

func (*DB) InsertAndReturnFile

func (db *DB) InsertAndReturnFile(file *File) (*File, error)

InsertAndReturnFile 主要用于同名檔案冲突时的逐一处理.

func (*DB) InsertBucket

func (db *DB) InsertBucket(form *model.CreateBucketForm) (*Bucket, error)

func (*DB) InsertBucketWithID

func (db *DB) InsertBucketWithID(bucket *Bucket) error

func (*DB) InsertFile

func (db *DB) InsertFile(file *File) error

func (*DB) InsertFileWithID

func (db *DB) InsertFileWithID(file *File) error

func (*DB) IsLoggedIn

func (db *DB) IsLoggedIn() bool

func (*DB) Logout

func (db *DB) Logout()

func (*DB) MoveFileToBucket

func (db *DB) MoveFileToBucket(fileID int64, bucketName string) error

func (*DB) MustBegin

func (db *DB) MustBegin() *sql.Tx

func (*DB) Query

func (db *DB) Query(query string, args ...any) (*sql.Rows, error)

func (*DB) QueryRow

func (db *DB) QueryRow(query string, args ...any) *sql.Row

func (*DB) SearchFiles

func (db *DB) SearchFiles(pattern, fileType string, limit int64) (files []*FilePlus, err error)

func (*DB) SetAESGCM

func (db *DB) SetAESGCM(password string) (realKey []byte, err error)

func (*DB) SetFileCheckedDamaged

func (db *DB) SetFileCheckedDamaged(file *File) error

func (*DB) UpdateBackupFileInfo

func (db *DB) UpdateBackupFileInfo(file *File) error

UpdateBackupFileInfo 更新一个文档的大多数信息, 但不更新 Checked 和 Damaged.

func (*DB) UpdateBucketInfo

func (db *DB) UpdateBucketInfo(bucket *Bucket) error

func (*DB) UpdateBucketName

func (db *DB) UpdateBucketName(newName string, bucketid int64) error

func (*DB) UpdateBucketTitle

func (db *DB) UpdateBucketTitle(bucket *Bucket) error

func (*DB) UpdateChecksumAndBucket

func (db *DB) UpdateChecksumAndBucket(fileID int64, checksum, bucketName string) error

主要用于仓库之间移动文档, 因加密解密而使 checksum 发生变化.

func (*DB) UpdateFileContent

func (db *DB) UpdateFileContent(file *File) error

func (*DB) UpdateFileInfo

func (db *DB) UpdateFileInfo(file *File) error

type ErrSameNameFiles

type ErrSameNameFiles = model.ErrSameNameFiles

type File

type File = model.File

func ScanFile

func ScanFile(row Row) (f File, err error)

type FileExportImport

type FileExportImport = model.FileExportImport

type FilePlus

type FilePlus = model.FilePlus

func RemoveChecksum

func RemoveChecksum(files []*FilePlus) []*FilePlus

type HexString

type HexString = string

func DefaultCipherKey

func DefaultCipherKey() HexString

DefaultCipherKey 用默認密碼去加密真正的密鑰.

type MovedFile

type MovedFile = model.MovedFile

type Nonce

type Nonce = [NonceSize]byte

type Project

type Project = model.Project

type ProjectStatus

type ProjectStatus = model.ProjectStatus

type Row

type Row interface {
	Scan(...any) error
}

type SecretKey

type SecretKey = [KeySize]byte

type TX

type TX interface {
	Exec(string, ...any) (sql.Result, error)
	Query(string, ...any) (*sql.Rows, error)
	QueryRow(string, ...any) *sql.Row
}

Jump to

Keyboard shortcuts

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