```
feat(bookmark): 添加文件夹树结构导入导出接口 新增 `/bookmarks/v1/folder/serial` 接口,支持文件夹树结构的压缩导出与解压导入。 同时完善了相关响应结构体定义,如 ImportResponse 等。 refactor(bookmark): 重命名配置文件并调整字段命名 将 `config/api.yaml` 重命名为 `config/bookmark.yaml`,并统一将 parent_path_id 字段 更名为 parent_id。此外,更新 API 鉴权头名称为 X-BookMark-Token。 feat(bookmark): 实现文件夹挂载管理功能 新增以下三个接口用于管理文件夹挂载: - GET `/bookmarks/v1/folder/{id}/mount` 获取挂载信息 - POST `/bookmarks/v1/folder/{id}/mount` 挂载文件夹 - DELETE `/bookmarks/v1/folder/{id}/mount` 取消挂载 新增相关结构体定义:MountResponse、MountInfo。 feat(vfs): 初始化虚拟文件系统 API 配置 新增 `config/vfs.yaml` 和 `config/vfs_cfg.yaml` 配置文件,定义 VFS 相关接口和代码生成规则。 接口包括文件/目录的创建、读取、更新和删除操作,并引入新的安全头 X-VFS-Token。 chore(config): 忽略 data 目录并更新生成路径 .gitignore 中新增忽略 data/ 目录。同时更新 bookmark 和 vfs 的代码生成输出路径分别为 `./gen/bookmarks/gen.go` 和 `./gen/vfs/gen.go`。 chore(deps): 引入 casbin、gopsutil 等依赖库 go.mod 中新增 casbin 权限控制、gopsutil 系统监控等相关依赖。 ```
This commit is contained in:
20
main.go
20
main.go
@ -5,15 +5,15 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"git.zzyxyz.com/zzy/zzyxyz_go_api/gen/api"
|
||||
bookmarks "git.zzyxyz.com/zzy/zzyxyz_go_api/gen/bookmarks"
|
||||
"git.zzyxyz.com/zzy/zzyxyz_go_api/internal/handlers"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
//go:generate go tool oapi-codegen -config config/cfg.yaml config/api.yaml
|
||||
|
||||
//go:embed config/api.yaml dist/*
|
||||
//go:generate go tool oapi-codegen -config config/bookmark_cfg.yaml config/bookmark.yaml
|
||||
//go:generate go tool oapi-codegen -config config/vfs_cfg.yaml config/vfs.yaml
|
||||
//go:embed config/* dist/*
|
||||
var staticFiles embed.FS
|
||||
|
||||
func main() {
|
||||
@ -30,10 +30,12 @@ func main() {
|
||||
{
|
||||
// create a type that satisfies the `api.ServerInterface`,
|
||||
// which contains an implementation of every operation from the generated code
|
||||
if server, err := handlers.NewBookMarks("user.sqlite3"); err != nil {
|
||||
if server, err := handlers.NewBookMarks("./data/bookmark.sqlite3"); err != nil {
|
||||
log.Fatal("Failed to create bookmarks server:", err)
|
||||
} else if permission, err := handlers.NewBookMarkPermission(); err != nil || permission == nil {
|
||||
log.Fatal("Failed to create bookmarks permission:", err)
|
||||
} else {
|
||||
api.RegisterHandlers(api_router, server)
|
||||
bookmarks.RegisterHandlersWithOptions(api_router, server, *permission)
|
||||
}
|
||||
|
||||
handlers.TodoHandler(api_router)
|
||||
@ -41,9 +43,9 @@ func main() {
|
||||
|
||||
// FIXME 可能有更好的方式实现这个代码
|
||||
// 提供嵌入的静态文件访问 - OpenAPI YAML 文件和 dist 目录
|
||||
router.GET("/swagger.yaml", func(c *gin.Context) {
|
||||
file, _ := staticFiles.ReadFile("config/api.yaml")
|
||||
c.Data(http.StatusOK, "application/x-yaml", file)
|
||||
router.GET("/config/*filepath", func(ctx *gin.Context) {
|
||||
fs := http.FileServer(http.FS(staticFiles))
|
||||
fs.ServeHTTP(ctx.Writer, ctx.Request)
|
||||
})
|
||||
router.GET("/swagger/*filepath", func(ctx *gin.Context) {
|
||||
// 直接修改请求路径实现映射
|
||||
|
Reference in New Issue
Block a user