🚚 Move io related functions to fs internal package
This commit is contained in:
parent
99dd7f55e0
commit
dda85eae98
3
pkg/internal/fs/README.md
Normal file
3
pkg/internal/fs/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# File System
|
||||||
|
|
||||||
|
The reason of why this package exists is because "cycle import was not allowed"
|
@ -1,4 +1,4 @@
|
|||||||
package services
|
package fs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -56,14 +56,6 @@ func MergeFileChunks(meta models.AttachmentFragment, arrange []string) (models.A
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Post-upload tasks
|
|
||||||
if err := database.C.Save(&attachment).Error; err != nil {
|
|
||||||
return attachment, err
|
|
||||||
}
|
|
||||||
|
|
||||||
CacheAttachment(attachment)
|
|
||||||
PublishAnalyzeTask(attachment)
|
|
||||||
|
|
||||||
// Clean up: remove chunk files
|
// Clean up: remove chunk files
|
||||||
go DeleteFragment(meta)
|
go DeleteFragment(meta)
|
||||||
for _, chunk := range arrange {
|
for _, chunk := range arrange {
|
@ -1,4 +1,4 @@
|
|||||||
package services
|
package fs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
|
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
||||||
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/fs"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/server/exts"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/server/exts"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/services"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/services"
|
||||||
@ -115,10 +116,19 @@ func uploadFragmentChunk(c *fiber.Ctx) error {
|
|||||||
return c.JSON(meta)
|
return c.JSON(meta)
|
||||||
}
|
}
|
||||||
|
|
||||||
attachment, err := services.MergeFileChunks(meta, chunkArrange)
|
// Merge & post-upload
|
||||||
|
attachment, err := fs.MergeFileChunks(meta, chunkArrange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||||
} else if !c.QueryBool("analyzeNow", false) {
|
}
|
||||||
|
|
||||||
|
// Post-upload tasks
|
||||||
|
if err := database.C.Save(&attachment).Error; err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||||
|
}
|
||||||
|
services.CacheAttachment(attachment)
|
||||||
|
|
||||||
|
if !c.QueryBool("analyzeNow", false) {
|
||||||
services.AnalyzeAttachment(attachment)
|
services.AnalyzeAttachment(attachment)
|
||||||
} else {
|
} else {
|
||||||
services.PublishAnalyzeTask(attachment)
|
services.PublishAnalyzeTask(attachment)
|
||||||
|
@ -17,6 +17,7 @@ import (
|
|||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
|
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
||||||
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/fs"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
"github.com/k0kubun/go-ansi"
|
"github.com/k0kubun/go-ansi"
|
||||||
@ -245,7 +246,7 @@ func AnalyzeAttachment(file models.Attachment) error {
|
|||||||
} else {
|
} else {
|
||||||
// Recycle the temporary file
|
// Recycle the temporary file
|
||||||
file.Destination = models.AttachmentDstTemporary
|
file.Destination = models.AttachmentDstTemporary
|
||||||
go DeleteFile(file)
|
go fs.DeleteFile(file)
|
||||||
// Finish
|
// Finish
|
||||||
log.Info().Dur("elapsed", time.Since(start)).Uint("id", file.ID).Msg("A file post-analyze upload task was finished.")
|
log.Info().Dur("elapsed", time.Since(start)).Uint("id", file.ID).Msg("A file post-analyze upload task was finished.")
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import (
|
|||||||
|
|
||||||
localCache "git.solsynth.dev/hypernet/paperclip/pkg/internal/cache"
|
localCache "git.solsynth.dev/hypernet/paperclip/pkg/internal/cache"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
|
||||||
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/fs"
|
||||||
|
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@ -218,7 +219,7 @@ func DeleteAttachment(item models.Attachment) error {
|
|||||||
tx.Commit()
|
tx.Commit()
|
||||||
|
|
||||||
if dat.RefCount == 0 {
|
if dat.RefCount == 0 {
|
||||||
go DeleteFile(dat)
|
go fs.DeleteFile(dat)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
|
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
|
||||||
pkg "git.solsynth.dev/hypernet/paperclip/pkg/internal"
|
pkg "git.solsynth.dev/hypernet/paperclip/pkg/internal"
|
||||||
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/fs"
|
||||||
"git.solsynth.dev/hypernet/paperclip/pkg/internal/gap"
|
"git.solsynth.dev/hypernet/paperclip/pkg/internal/gap"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
|
|
||||||
@ -80,9 +81,9 @@ func main() {
|
|||||||
// Configure timed tasks
|
// Configure timed tasks
|
||||||
quartz := cron.New(cron.WithLogger(cron.VerbosePrintfLogger(&log.Logger)))
|
quartz := cron.New(cron.WithLogger(cron.VerbosePrintfLogger(&log.Logger)))
|
||||||
quartz.AddFunc("@every 60m", services.DoAutoDatabaseCleanup)
|
quartz.AddFunc("@every 60m", services.DoAutoDatabaseCleanup)
|
||||||
quartz.AddFunc("@every 60m", services.RunMarkLifecycleDeletionTask)
|
quartz.AddFunc("@every 60m", fs.RunMarkLifecycleDeletionTask)
|
||||||
quartz.AddFunc("@every 60m", services.RunMarkMultipartDeletionTask)
|
quartz.AddFunc("@every 60m", fs.RunMarkMultipartDeletionTask)
|
||||||
quartz.AddFunc("@midnight", services.RunScheduleDeletionTask)
|
quartz.AddFunc("@midnight", fs.RunScheduleDeletionTask)
|
||||||
quartz.Start()
|
quartz.Start()
|
||||||
|
|
||||||
// Server
|
// Server
|
||||||
@ -93,7 +94,7 @@ func main() {
|
|||||||
|
|
||||||
// Post-boot actions
|
// Post-boot actions
|
||||||
services.ScanUnanalyzedFileFromDatabase()
|
services.ScanUnanalyzedFileFromDatabase()
|
||||||
services.RunMarkLifecycleDeletionTask()
|
fs.RunMarkLifecycleDeletionTask()
|
||||||
|
|
||||||
// Messages
|
// Messages
|
||||||
quit := make(chan os.Signal, 1)
|
quit := make(chan os.Signal, 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user