12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package dbfs
-
- import (
- "context"
- "os"
-
- "code.gitea.io/gitea/models/db"
- )
-
- 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"`
- }
-
- func init() {
- db.RegisterModel(new(dbfsMeta))
- db.RegisterModel(new(dbfsData))
- }
-
- func OpenFile(ctx context.Context, name string, flag int) (File, error) {
- f, err := newDbFile(ctx, name)
- if err != nil {
- return nil, err
- }
- err = f.open(flag)
- if err != nil {
- _ = f.Close()
- return nil, err
- }
- return f, nil
- }
-
- func Open(ctx context.Context, name string) (File, error) {
- return OpenFile(ctx, name, os.O_RDONLY)
- }
-
- func Create(ctx context.Context, name string) (File, error) {
- return OpenFile(ctx, name, os.O_RDWR|os.O_CREATE|os.O_TRUNC)
- }
-
- func Rename(ctx context.Context, oldPath, newPath string) error {
- f, err := newDbFile(ctx, oldPath)
- if err != nil {
- return err
- }
- defer f.Close()
- return f.renameTo(newPath)
- }
-
- func Remove(ctx context.Context, name string) error {
- f, err := newDbFile(ctx, name)
- if err != nil {
- return err
- }
- defer f.Close()
- return f.delete()
- }
|