mirror of
https://github.com/go-gitea/gitea.git
synced 2025-05-18 00:49:09 -04:00
chore: add dbfs to migration
This commit is contained in:
parent
c1fce2cf7d
commit
8f2efdaf60
@ -37,7 +37,7 @@ type file struct {
|
||||
|
||||
var _ File = (*file)(nil)
|
||||
|
||||
func (f *file) readAt(fileMeta *FileMeta, offset int64, p []byte) (n int, err error) {
|
||||
func (f *file) readAt(fileMeta *dbfsMeta, offset int64, p []byte) (n int, err error) {
|
||||
if offset >= fileMeta.FileSize {
|
||||
return 0, io.EOF
|
||||
}
|
||||
@ -55,7 +55,7 @@ func (f *file) readAt(fileMeta *FileMeta, offset int64, p []byte) (n int, err er
|
||||
if needRead <= 0 {
|
||||
return 0, io.EOF
|
||||
}
|
||||
var fileData FileData
|
||||
var fileData dbfsData
|
||||
ok, err := db.GetEngine(f.ctx).Where("meta_id = ? AND blob_offset = ?", f.metaID, blobOffset).Get(&fileData)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
@ -128,12 +128,12 @@ func (f *file) Write(p []byte) (n int, err error) {
|
||||
buf = buf[:readBytes]
|
||||
}
|
||||
|
||||
fileData := FileData{
|
||||
fileData := dbfsData{
|
||||
MetaID: fileMeta.ID,
|
||||
BlobOffset: blobOffset,
|
||||
BlobData: buf,
|
||||
}
|
||||
if res, err := db.GetEngine(f.ctx).Exec("UPDATE file_data SET revision=revision+1, blob_data=? WHERE meta_id=? AND blob_offset=?", buf, fileMeta.ID, blobOffset); err != nil {
|
||||
if res, err := db.GetEngine(f.ctx).Exec("UPDATE dbfs_data SET revision=revision+1, blob_data=? WHERE meta_id=? AND blob_offset=?", buf, fileMeta.ID, blobOffset); err != nil {
|
||||
return written, err
|
||||
} else if updated, err := res.RowsAffected(); err != nil {
|
||||
return written, err
|
||||
@ -151,7 +151,7 @@ func (f *file) Write(p []byte) (n int, err error) {
|
||||
p = p[needWrite:]
|
||||
}
|
||||
|
||||
fileMetaUpdate := FileMeta{
|
||||
fileMetaUpdate := dbfsMeta{
|
||||
ModifyTimestamp: timeToFileTimestamp(time.Now()),
|
||||
}
|
||||
if needUpdateSize {
|
||||
@ -198,8 +198,8 @@ func timeToFileTimestamp(t time.Time) int64 {
|
||||
return t.UnixMicro()
|
||||
}
|
||||
|
||||
func (f *file) loadMetaByPath() (*FileMeta, error) {
|
||||
var fileMeta FileMeta
|
||||
func (f *file) loadMetaByPath() (*dbfsMeta, error) {
|
||||
var fileMeta dbfsMeta
|
||||
if ok, err := db.GetEngine(f.ctx).Where("full_path = ?", f.fullPath).Get(&fileMeta); err != nil {
|
||||
return nil, err
|
||||
} else if ok {
|
||||
@ -262,7 +262,7 @@ func (f *file) createEmpty() error {
|
||||
return os.ErrExist
|
||||
}
|
||||
now := time.Now()
|
||||
_, err := db.GetEngine(f.ctx).Insert(&FileMeta{
|
||||
_, err := db.GetEngine(f.ctx).Insert(&dbfsMeta{
|
||||
FullPath: f.fullPath,
|
||||
BlockSize: f.blockSize,
|
||||
CreateTimestamp: timeToFileTimestamp(now),
|
||||
@ -282,10 +282,10 @@ func (f *file) truncate() error {
|
||||
return os.ErrNotExist
|
||||
}
|
||||
return db.WithTx(f.ctx, func(ctx context.Context) error {
|
||||
if _, err := db.GetEngine(ctx).Exec("UPDATE file_meta SET file_size = 0 WHERE id = ?", f.metaID); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Exec("UPDATE dbfs_meta SET file_size = 0 WHERE id = ?", f.metaID); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := db.GetEngine(ctx).Delete(&FileData{MetaID: f.metaID}); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Delete(&dbfsData{MetaID: f.metaID}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -298,7 +298,7 @@ func (f *file) renameTo(newPath string) error {
|
||||
}
|
||||
newPath = buildPath(newPath)
|
||||
return db.WithTx(f.ctx, func(ctx context.Context) error {
|
||||
if _, err := db.GetEngine(ctx).Exec("UPDATE file_meta SET full_path = ? WHERE id = ?", newPath, f.metaID); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Exec("UPDATE dbfs_meta SET full_path = ? WHERE id = ?", newPath, f.metaID); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -310,10 +310,10 @@ func (f *file) delete() error {
|
||||
return os.ErrNotExist
|
||||
}
|
||||
return db.WithTx(f.ctx, func(ctx context.Context) error {
|
||||
if _, err := db.GetEngine(ctx).Delete(&FileMeta{ID: f.metaID}); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Delete(&dbfsMeta{ID: f.metaID}); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := db.GetEngine(ctx).Delete(&FileData{MetaID: f.metaID}); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Delete(&dbfsData{MetaID: f.metaID}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -331,8 +331,8 @@ func (f *file) size() (int64, error) {
|
||||
return fileMeta.FileSize, nil
|
||||
}
|
||||
|
||||
func findFileMetaByID(ctx context.Context, metaID int64) (*FileMeta, error) {
|
||||
var fileMeta FileMeta
|
||||
func findFileMetaByID(ctx context.Context, metaID int64) (*dbfsMeta, error) {
|
||||
var fileMeta dbfsMeta
|
||||
if ok, err := db.GetEngine(ctx).Where("id = ?", metaID).Get(&fileMeta); err != nil {
|
||||
return nil, err
|
||||
} else if ok {
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
"code.gitea.io/gitea/models/db"
|
||||
)
|
||||
|
||||
type FileMeta struct {
|
||||
type dbfsMeta struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
FullPath string `xorm:"VARCHAR(500) UNIQUE NOT NULL"`
|
||||
BlockSize int64 `xorm:"BIGINT NOT NULL"`
|
||||
@ -20,7 +20,7 @@ type FileMeta struct {
|
||||
ModifyTimestamp int64 `xorm:"BIGINT NOT NULL"`
|
||||
}
|
||||
|
||||
type FileData struct {
|
||||
type dbfsData struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
Revision int64 `xorm:"BIGINT NOT NULL"`
|
||||
MetaID int64 `xorm:"BIGINT index(meta_offset) NOT NULL"`
|
||||
@ -30,8 +30,8 @@ type FileData struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterModel(new(FileMeta))
|
||||
db.RegisterModel(new(FileData))
|
||||
db.RegisterModel(new(dbfsMeta))
|
||||
db.RegisterModel(new(dbfsData))
|
||||
}
|
||||
|
||||
func OpenFile(ctx context.Context, name string, flag int) (File, error) {
|
||||
|
@ -144,6 +144,24 @@ func addBotTables(x *xorm.Engine) error {
|
||||
Updated timeutil.TimeStamp `xorm:"updated"`
|
||||
}
|
||||
|
||||
type dbfsMeta struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
FullPath string `xorm:"VARCHAR(500) UNIQUE NOT NULL"`
|
||||
BlockSize int64 `xorm:"BIGINT NOT NULL"`
|
||||
FileSize int64 `xorm:"BIGINT NOT NULL"`
|
||||
CreateTimestamp int64 `xorm:"BIGINT NOT NULL"`
|
||||
ModifyTimestamp int64 `xorm:"BIGINT NOT NULL"`
|
||||
}
|
||||
|
||||
type dbfsData struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
Revision int64 `xorm:"BIGINT NOT NULL"`
|
||||
MetaID int64 `xorm:"BIGINT index(meta_offset) NOT NULL"`
|
||||
BlobOffset int64 `xorm:"BIGINT index(meta_offset) NOT NULL"`
|
||||
BlobSize int64 `xorm:"BIGINT NOT NULL"`
|
||||
BlobData []byte `xorm:"BLOB NOT NULL"`
|
||||
}
|
||||
|
||||
return x.Sync(
|
||||
new(BotRunner),
|
||||
new(BotRunnerToken),
|
||||
@ -153,5 +171,7 @@ func addBotTables(x *xorm.Engine) error {
|
||||
new(BotRunIndex),
|
||||
new(BotTask),
|
||||
new(BotTaskStep),
|
||||
new(dbfsMeta),
|
||||
new(dbfsData),
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user