refactor(storage): drop per-upload storage_driver, use storage_config as single source

Remove w_uploads.storage_driver and route all read/write/delete paths through
storage.Active() backed by storage_config.driver. Block direct driver switches
when uploads exist; require migration task instead. Simplify migration to
cursor-based file_path iteration without per-row driver updates.
This commit is contained in:
ryan
2026-06-18 13:56:31 +08:00
parent 1f391e9ec2
commit 410ff14795
25 changed files with 512 additions and 604 deletions
+133 -137
View File
@@ -3367,7 +3367,7 @@ const docTemplate = `{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/upload.listFilesResponse"
"$ref": "#/definitions/handler.listFilesResponse"
}
}
}
@@ -3414,7 +3414,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/upload.batchDownloadRequest"
"$ref": "#/definitions/handler.batchDownloadRequest"
}
}
],
@@ -3525,7 +3525,7 @@ const docTemplate = `{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/upload.fileStatsResponse"
"$ref": "#/definitions/handler.fileStatsResponse"
}
}
}
@@ -4654,7 +4654,7 @@ const docTemplate = `{
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/upload.listMyFilesResponse"
"$ref": "#/definitions/handler.listMyFilesResponse"
}
}
}
@@ -4702,7 +4702,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/upload.updateMyFileRequest"
"$ref": "#/definitions/handler.updateMyFileRequest"
}
}
],
@@ -5688,6 +5688,134 @@ const docTemplate = `{
}
}
},
"handler.batchDownloadRequest": {
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
}
},
"handler.distributionItem": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"name": {
"type": "string"
},
"size": {
"type": "integer"
}
}
},
"handler.fileStatsResponse": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"$ref": "#/definitions/handler.distributionItem"
}
},
"total_count": {
"type": "integer"
},
"total_size": {
"type": "integer"
},
"trend": {
"type": "array",
"items": {
"$ref": "#/definitions/handler.trendItem"
}
},
"types": {
"type": "array",
"items": {
"$ref": "#/definitions/handler.distributionItem"
}
}
}
},
"handler.listFilesResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/model.Upload"
}
},
"page": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"handler.listMyFilesResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/model.Upload"
}
},
"page": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"handler.trendItem": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"date": {
"type": "string"
},
"size": {
"type": "integer"
}
}
},
"handler.updateMyFileRequest": {
"type": "object",
"properties": {
"access_mode": {
"type": "integer",
"enum": [
0,
1
]
},
"file_name": {
"type": "string",
"maxLength": 255
}
}
},
"logger.LogEntry": {
"type": "object",
"properties": {
@@ -6280,10 +6408,6 @@ const docTemplate = `{
}
]
},
"storage_driver": {
"description": "存储引擎驱动 (如 local, s3, oss)",
"type": "string"
},
"type": {
"description": "业务标识类型 (如 avatar, doc, attachment)",
"type": "string"
@@ -7197,134 +7321,6 @@ const docTemplate = `{
}
}
},
"upload.batchDownloadRequest": {
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
}
},
"upload.distributionItem": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"name": {
"type": "string"
},
"size": {
"type": "integer"
}
}
},
"upload.fileStatsResponse": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"$ref": "#/definitions/upload.distributionItem"
}
},
"total_count": {
"type": "integer"
},
"total_size": {
"type": "integer"
},
"trend": {
"type": "array",
"items": {
"$ref": "#/definitions/upload.trendItem"
}
},
"types": {
"type": "array",
"items": {
"$ref": "#/definitions/upload.distributionItem"
}
}
}
},
"upload.listFilesResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/model.Upload"
}
},
"page": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"upload.listMyFilesResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/model.Upload"
}
},
"page": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"upload.trendItem": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"date": {
"type": "string"
},
"size": {
"type": "integer"
}
}
},
"upload.updateMyFileRequest": {
"type": "object",
"properties": {
"access_mode": {
"type": "integer",
"enum": [
0,
1
]
},
"file_name": {
"type": "string",
"maxLength": 255
}
}
},
"user.changePasswordRequest": {
"type": "object",
"properties": {