From 4c2f35bea7392dd1ea73b37c5b887d1af36c3d84 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:25 +0900 Subject: [PATCH 01/30] feat: add content types table --- db/main/constants/content_types.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 db/main/constants/content_types.yaml diff --git a/db/main/constants/content_types.yaml b/db/main/constants/content_types.yaml new file mode 100644 index 00000000..9bf46a60 --- /dev/null +++ b/db/main/constants/content_types.yaml @@ -0,0 +1,6 @@ +ids: + - image/png + - image/jpeg + - application/zip + - application/pdf + - text/csv From 73f99df769df0f63f14ec6f23b218b84caa13c17 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:27 +0900 Subject: [PATCH 02/30] feat: add content types table --- db/main/migrations/1_initialize.sql | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/db/main/migrations/1_initialize.sql b/db/main/migrations/1_initialize.sql index a2972161..4defaea4 100644 --- a/db/main/migrations/1_initialize.sql +++ b/db/main/migrations/1_initialize.sql @@ -1,4 +1,10 @@ -- +goose Up +CREATE TABLE `content_types` ( + `id` VARCHAR(256) NOT NULL COMMENT "id", + CONSTRAINT `content_types_pkey` PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 +COMMENT "content_type"; + CREATE TABLE `asset_types` ( `id` VARCHAR(256) NOT NULL COMMENT "id", CONSTRAINT `asset_types_pkey` PRIMARY KEY (`id`) @@ -7,14 +13,15 @@ COMMENT "asset_type"; CREATE TABLE `assets` ( `id` VARCHAR(64) NOT NULL COMMENT "id", - `content_type` VARCHAR(1024) NOT NULL COMMENT "content_type", + `content_type` VARCHAR(256) NOT NULL COMMENT "content_type", `type` VARCHAR(256) NOT NULL COMMENT "type", `path` TEXT NOT NULL COMMENT "path", `expires_at` DATETIME NOT NULL COMMENT "expires_at", `created_at` DATETIME NOT NULL COMMENT "created date", `updated_at` DATETIME NOT NULL COMMENT "update date", CONSTRAINT `assets_pkey` PRIMARY KEY (`id`), - CONSTRAINT `assets_fkey_type` FOREIGN KEY (`type`) REFERENCES `asset_types` (`id`) + CONSTRAINT `assets_fkey_type` FOREIGN KEY (`type`) REFERENCES `asset_types` (`id`), + CONSTRAINT `assets_fkey_content_type` FOREIGN KEY (`content_type`) REFERENCES `content_types` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT "asset"; @@ -57,3 +64,4 @@ DROP TABLE staff_roles; DROP TABLE tenants; DROP TABLE assets; DROP TABLE asset_types; +DROP TABLE content_types; \ No newline at end of file From ea182daad5d080864b86c380c9ae36bb9be26325 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:29 +0900 Subject: [PATCH 03/30] feat: add content types table --- db/main/schema.sql | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/db/main/schema.sql b/db/main/schema.sql index 1da79a42..b3a5166a 100644 --- a/db/main/schema.sql +++ b/db/main/schema.sql @@ -5,7 +5,7 @@ CREATE TABLE `asset_types` ( CREATE TABLE `assets` ( `id` varchar(64) NOT NULL COMMENT 'id', - `content_type` varchar(1024) NOT NULL COMMENT 'content_type', + `content_type` varchar(256) NOT NULL COMMENT 'content_type', `type` varchar(256) NOT NULL COMMENT 'type', `path` text NOT NULL COMMENT 'path', `expires_at` datetime NOT NULL COMMENT 'expires_at', @@ -13,9 +13,16 @@ CREATE TABLE `assets` ( `updated_at` datetime NOT NULL COMMENT 'update date', PRIMARY KEY (`id`), KEY `assets_fkey_type` (`type`), + KEY `assets_fkey_content_type` (`content_type`), + CONSTRAINT `assets_fkey_content_type` FOREIGN KEY (`content_type`) REFERENCES `content_types` (`id`), CONSTRAINT `assets_fkey_type` FOREIGN KEY (`type`) REFERENCES `asset_types` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='asset'; +CREATE TABLE `content_types` ( + `id` varchar(256) NOT NULL COMMENT 'id', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='content_type'; + CREATE TABLE `goose_db_version` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `version_id` bigint NOT NULL, From 1ca495f56dd1cf2e196fd33cab44cdf928025daf Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:31 +0900 Subject: [PATCH 04/30] feat: add content types table --- internal/domain/cache/mock/asset_path.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/cache/mock/asset_path.go b/internal/domain/cache/mock/asset_path.go index 39dda133..dc657668 100644 --- a/internal/domain/cache/mock/asset_path.go +++ b/internal/domain/cache/mock/asset_path.go @@ -21,6 +21,7 @@ import ( type MockAssetPath struct { ctrl *gomock.Controller recorder *MockAssetPathMockRecorder + isgomock struct{} } // MockAssetPathMockRecorder is the mock recorder for MockAssetPath. From e387e180e38917bdf5fe8434aed8cf3104c3969f Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:33 +0900 Subject: [PATCH 05/30] feat: add content types table --- internal/domain/model/factory/factory.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/domain/model/factory/factory.go b/internal/domain/model/factory/factory.go index 6fd59ac1..070c7069 100644 --- a/internal/domain/model/factory/factory.go +++ b/internal/domain/model/factory/factory.go @@ -44,7 +44,7 @@ func NewFactory() struct { if err := faker.FakeData(asset, opts...); err != nil { panic(err) } - asset.ContentType = "image/png" + asset.ContentType = model.ContentTypeImagePNG asset.Type = model.AssetTypeUserImage asset.Path = "private/user_images/mock.png" asset.ExpiresAt = n.Add(15 * time.Minute) From 620bca3f5547398bfd3c85f508765132e5a9aa0b Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:35 +0900 Subject: [PATCH 06/30] feat: add content types table --- internal/domain/model/asset.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/internal/domain/model/asset.go b/internal/domain/model/asset.go index 085935f3..7123bcab 100644 --- a/internal/domain/model/asset.go +++ b/internal/domain/model/asset.go @@ -2,7 +2,6 @@ package model import ( "fmt" - "mime" "strings" "time" @@ -13,7 +12,7 @@ import ( type Asset struct { ID string - ContentType string + ContentType ContentType Type AssetType Path string ExpiresAt time.Time @@ -25,22 +24,18 @@ type Assets []*Asset func NewAsset( assetType AssetType, - contentType string, + contentType ContentType, t time.Time, -) (*Asset, error) { - ext, err := mime.ExtensionsByType(contentType) - if err != nil { - return nil, errors.InternalErr.Wrap(err) - } +) *Asset { return &Asset{ ID: id.New(), ContentType: contentType, Type: assetType, - Path: fmt.Sprintf("%s/%s%s", assetType.String(), uuid.UUIDBase64(), ext[0]), + Path: fmt.Sprintf("%s/%s.%s", assetType.String(), uuid.UUIDBase64(), contentType.Extension()), ExpiresAt: t.Add(15 * time.Minute), CreatedAt: t, UpdatedAt: t, - }, nil + } } func (m *Asset) Expiration() time.Duration { From 789993d343c4021b17f04e556b621444c7dfd51b Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:40 +0900 Subject: [PATCH 07/30] feat: add content types table --- internal/domain/model/content_type.go | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 internal/domain/model/content_type.go diff --git a/internal/domain/model/content_type.go b/internal/domain/model/content_type.go new file mode 100644 index 00000000..bda28e3e --- /dev/null +++ b/internal/domain/model/content_type.go @@ -0,0 +1,52 @@ +package model + +type ContentType string + +const ( + ContentTypeUnknown ContentType = "unknown" + ContentTypeImagePNG ContentType = "image/png" + ContentTypeImageJPEG ContentType = "image/jpeg" + ContentTypeApplicationZIP ContentType = "application/zip" + ContentTypeApplicationPDF ContentType = "application/pdf" + ContentTypeTextCSV ContentType = "text/csv" +) + +func NewContentType(contentType string) ContentType { + switch contentType { + case ContentTypeImagePNG.String(), + ContentTypeImageJPEG.String(), + ContentTypeApplicationZIP.String(), + ContentTypeApplicationPDF.String(), + ContentTypeTextCSV.String(): + return ContentType(contentType) + default: + return ContentTypeUnknown + } +} + +func (m ContentType) String() string { + return string(m) +} + +func (m ContentType) Valid() bool { + return m != ContentTypeUnknown && m != "" +} + +func (m ContentType) Extension() string { + switch m { + case ContentTypeImagePNG: + return "png" + case ContentTypeImageJPEG: + return "jpeg" + case ContentTypeApplicationZIP: + return "zip" + case ContentTypeApplicationPDF: + return "pdf" + case ContentTypeTextCSV: + return "csv" + case ContentTypeUnknown: + fallthrough + default: + panic("invalid content type") + } +} From 167b63b8eaf4e25805d00828401df6bcb4bdd7e2 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:42 +0900 Subject: [PATCH 08/30] feat: add content types table --- internal/domain/repository/mock/asset.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/domain/repository/mock/asset.go b/internal/domain/repository/mock/asset.go index 1839e1ed..67e158f3 100644 --- a/internal/domain/repository/mock/asset.go +++ b/internal/domain/repository/mock/asset.go @@ -14,6 +14,7 @@ import ( reflect "reflect" time "time" + model "github.com/abyssparanoia/rapid-go/internal/domain/model" gomock "go.uber.org/mock/gomock" ) @@ -21,6 +22,7 @@ import ( type MockAsset struct { ctrl *gomock.Controller recorder *MockAssetMockRecorder + isgomock struct{} } // MockAssetMockRecorder is the mock recorder for MockAsset. @@ -56,7 +58,7 @@ func (mr *MockAssetMockRecorder) GenerateReadPresignedURL(ctx, path, expires any } // GenerateWritePresignedURL mocks base method. -func (m *MockAsset) GenerateWritePresignedURL(ctx context.Context, contentType, path string, expires time.Duration) (string, error) { +func (m *MockAsset) GenerateWritePresignedURL(ctx context.Context, contentType model.ContentType, path string, expires time.Duration) (string, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GenerateWritePresignedURL", ctx, contentType, path, expires) ret0, _ := ret[0].(string) From dae111429e3442ca6a3e7b7633056692b02c8713 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:44 +0900 Subject: [PATCH 09/30] feat: add content types table --- internal/domain/repository/mock/staff_authentication.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/repository/mock/staff_authentication.go b/internal/domain/repository/mock/staff_authentication.go index 4c0fbf60..2dc26177 100644 --- a/internal/domain/repository/mock/staff_authentication.go +++ b/internal/domain/repository/mock/staff_authentication.go @@ -22,6 +22,7 @@ import ( type MockStaffAuthentication struct { ctrl *gomock.Controller recorder *MockStaffAuthenticationMockRecorder + isgomock struct{} } // MockStaffAuthenticationMockRecorder is the mock recorder for MockStaffAuthentication. From f1f475c4801b5e624f7e2dd61b0fd5baf6b20805 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:48 +0900 Subject: [PATCH 10/30] feat: add content types table --- internal/domain/repository/mock/staff.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/repository/mock/staff.go b/internal/domain/repository/mock/staff.go index 4fb441f4..edfb5968 100644 --- a/internal/domain/repository/mock/staff.go +++ b/internal/domain/repository/mock/staff.go @@ -22,6 +22,7 @@ import ( type MockStaff struct { ctrl *gomock.Controller recorder *MockStaffMockRecorder + isgomock struct{} } // MockStaffMockRecorder is the mock recorder for MockStaff. From b8a73a5092da4222041f99986d733b71433890dc Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:50 +0900 Subject: [PATCH 11/30] feat: add content types table --- internal/domain/repository/mock/tenant.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/repository/mock/tenant.go b/internal/domain/repository/mock/tenant.go index 5fb39231..2a7d6b3a 100644 --- a/internal/domain/repository/mock/tenant.go +++ b/internal/domain/repository/mock/tenant.go @@ -22,6 +22,7 @@ import ( type MockTenant struct { ctrl *gomock.Controller recorder *MockTenantMockRecorder + isgomock struct{} } // MockTenantMockRecorder is the mock recorder for MockTenant. From 12056492aa3a81d538b13cc352789eac5c87f0cd Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:53 +0900 Subject: [PATCH 12/30] feat: add content types table --- internal/domain/repository/mock/transactable.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/repository/mock/transactable.go b/internal/domain/repository/mock/transactable.go index f3cb445e..3109a02e 100644 --- a/internal/domain/repository/mock/transactable.go +++ b/internal/domain/repository/mock/transactable.go @@ -20,6 +20,7 @@ import ( type MockTransactable struct { ctrl *gomock.Controller recorder *MockTransactableMockRecorder + isgomock struct{} } // MockTransactableMockRecorder is the mock recorder for MockTransactable. From 0abc66507ecf25588c3764100ef16f2d87adc122 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:55 +0900 Subject: [PATCH 13/30] feat: add content types table --- internal/domain/repository/asset.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/domain/repository/asset.go b/internal/domain/repository/asset.go index c7eecc1d..fdb6d1de 100644 --- a/internal/domain/repository/asset.go +++ b/internal/domain/repository/asset.go @@ -3,13 +3,15 @@ package repository import ( "context" "time" + + "github.com/abyssparanoia/rapid-go/internal/domain/model" ) //go:generate go run go.uber.org/mock/mockgen -source=$GOFILE -destination=mock/$GOFILE -package=mock_repository type Asset interface { GenerateWritePresignedURL( ctx context.Context, - contentType string, + contentType model.ContentType, path string, expires time.Duration, ) (string, error) From bf43f9d84be534ffc3ab1edbd909a657736e5a5c Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:57 +0900 Subject: [PATCH 14/30] feat: add content types table --- internal/domain/service/mock/asset.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/domain/service/mock/asset.go b/internal/domain/service/mock/asset.go index 9454bb2e..5be10f18 100644 --- a/internal/domain/service/mock/asset.go +++ b/internal/domain/service/mock/asset.go @@ -23,6 +23,7 @@ import ( type MockAsset struct { ctrl *gomock.Controller recorder *MockAssetMockRecorder + isgomock struct{} } // MockAssetMockRecorder is the mock recorder for MockAsset. @@ -57,7 +58,7 @@ func (mr *MockAssetMockRecorder) BatchSetStaffURLs(ctx, staffs any) *gomock.Call } // CreatePresignedURL mocks base method. -func (m *MockAsset) CreatePresignedURL(ctx context.Context, assetType model.AssetType, contentType string, requestTime time.Time) (*service.AssetCreatePresignedURLResult, error) { +func (m *MockAsset) CreatePresignedURL(ctx context.Context, assetType model.AssetType, contentType model.ContentType, requestTime time.Time) (*service.AssetCreatePresignedURLResult, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CreatePresignedURL", ctx, assetType, contentType, requestTime) ret0, _ := ret[0].(*service.AssetCreatePresignedURLResult) From b1387a23c767d5f68f2087b869d43e051c14a919 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:34:59 +0900 Subject: [PATCH 15/30] feat: add content types table --- internal/domain/service/mock/staff.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/domain/service/mock/staff.go b/internal/domain/service/mock/staff.go index 30c6c6de..0497034c 100644 --- a/internal/domain/service/mock/staff.go +++ b/internal/domain/service/mock/staff.go @@ -22,6 +22,7 @@ import ( type MockStaff struct { ctrl *gomock.Controller recorder *MockStaffMockRecorder + isgomock struct{} } // MockStaffMockRecorder is the mock recorder for MockStaff. From c024898a745f5d4891b268a9f98017aa043e65d2 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:03 +0900 Subject: [PATCH 16/30] feat: add content types table --- internal/domain/service/asset_impl_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/domain/service/asset_impl_test.go b/internal/domain/service/asset_impl_test.go index 48095cf3..2719bbac 100644 --- a/internal/domain/service/asset_impl_test.go +++ b/internal/domain/service/asset_impl_test.go @@ -27,7 +27,7 @@ func TestAssetService_CreatePresignedURL(t *testing.T) { requestTime := testdata.RequestTime type args struct { assetType model.AssetType - contentType string + contentType model.ContentType requestTime time.Time } From e8889e8073489817dddfabe034f89974d4892ba1 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:06 +0900 Subject: [PATCH 17/30] feat: add content types table --- internal/domain/service/asset_impl.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/internal/domain/service/asset_impl.go b/internal/domain/service/asset_impl.go index ed985be4..94d3a6a0 100644 --- a/internal/domain/service/asset_impl.go +++ b/internal/domain/service/asset_impl.go @@ -27,17 +27,14 @@ func NewAsset( func (s *assetService) CreatePresignedURL( ctx context.Context, assetType model.AssetType, - contentType string, + contentType model.ContentType, requestTime time.Time, ) (*AssetCreatePresignedURLResult, error) { - asset, err := model.NewAsset( + asset := model.NewAsset( assetType, contentType, requestTime, ) - if err != nil { - return nil, err - } presignedURL, err := s.assetRepository.GenerateWritePresignedURL( ctx, contentType, From e07953b81bd2a336a9798cfd0f6c88fe6f4941ed Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:09 +0900 Subject: [PATCH 18/30] feat: add content types table --- internal/domain/service/asset.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/domain/service/asset.go b/internal/domain/service/asset.go index 0089c066..4d995a15 100644 --- a/internal/domain/service/asset.go +++ b/internal/domain/service/asset.go @@ -12,7 +12,7 @@ type Asset interface { CreatePresignedURL( ctx context.Context, assetType model.AssetType, - contentType string, + contentType model.ContentType, requestTime time.Time, ) (*AssetCreatePresignedURLResult, error) GetWithValidate( From 82a3dd2832b7f49727b45d03a140b96f08ec83d4 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:14 +0900 Subject: [PATCH 19/30] feat: add content types table --- internal/infrastructure/database/internal/marshaller/asset.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/infrastructure/database/internal/marshaller/asset.go b/internal/infrastructure/database/internal/marshaller/asset.go index 90894000..7a6b4840 100644 --- a/internal/infrastructure/database/internal/marshaller/asset.go +++ b/internal/infrastructure/database/internal/marshaller/asset.go @@ -8,7 +8,7 @@ import ( func AssetToModel(e *dbmodel.Asset) *model.Asset { m := &model.Asset{ ID: e.ID, - ContentType: e.ContentType, + ContentType: model.NewContentType(e.ContentType), Type: model.NewAssetType(e.Type), Path: e.Path, ExpiresAt: e.ExpiresAt, @@ -30,7 +30,7 @@ func AssetsToModel(slice dbmodel.AssetSlice) model.Assets { func AssetToDBModel(m *model.Asset) *dbmodel.Asset { return &dbmodel.Asset{ ID: m.ID, - ContentType: m.ContentType, + ContentType: m.ContentType.String(), Type: m.Type.String(), Path: m.Path, ExpiresAt: m.ExpiresAt, From 31541350545d3f6cd52363d7ff3c5d1fb26ce328 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:16 +0900 Subject: [PATCH 20/30] feat: add content types table --- internal/infrastructure/gcs/repository/asset.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/infrastructure/gcs/repository/asset.go b/internal/infrastructure/gcs/repository/asset.go index dbf85f59..f3fae47c 100644 --- a/internal/infrastructure/gcs/repository/asset.go +++ b/internal/infrastructure/gcs/repository/asset.go @@ -7,6 +7,7 @@ import ( "cloud.google.com/go/storage" "github.com/abyssparanoia/rapid-go/internal/domain/errors" + "github.com/abyssparanoia/rapid-go/internal/domain/model" "github.com/abyssparanoia/rapid-go/internal/domain/repository" "github.com/abyssparanoia/rapid-go/internal/pkg/now" ) @@ -25,7 +26,7 @@ func NewAsset( func (r *asset) GenerateWritePresignedURL( ctx context.Context, - contentType string, + contentType model.ContentType, path string, expires time.Duration, ) (string, error) { @@ -33,7 +34,7 @@ func (r *asset) GenerateWritePresignedURL( opts := &storage.SignedURLOptions{ Expires: now.Add(expires), Method: http.MethodPut, - ContentType: contentType, + ContentType: contentType.String(), } singedURL, err := r.bucketHandle.SignedURL(path, opts) if err != nil { From a1958b6959737626223d1906d44dd84bb12e5cc0 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:19 +0900 Subject: [PATCH 21/30] feat: add content types table --- .../handler/admin/marshaller/content_type.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/infrastructure/grpc/internal/handler/admin/marshaller/content_type.go b/internal/infrastructure/grpc/internal/handler/admin/marshaller/content_type.go index c5f13a3a..4d856628 100644 --- a/internal/infrastructure/grpc/internal/handler/admin/marshaller/content_type.go +++ b/internal/infrastructure/grpc/internal/handler/admin/marshaller/content_type.go @@ -1,18 +1,25 @@ package marshaller import ( + "github.com/abyssparanoia/rapid-go/internal/domain/model" admin_apiv1 "github.com/abyssparanoia/rapid-go/internal/infrastructure/grpc/pb/rapid/admin_api/v1" ) -func AdminContentTypeToModel(contentType admin_apiv1.ContentType) string { +func AdminContentTypeToModel(contentType admin_apiv1.ContentType) model.ContentType { switch contentType { case admin_apiv1.ContentType_CONTENT_TYPE_IMAGE_PNG: - return "image/png" + return model.ContentTypeImagePNG case admin_apiv1.ContentType_CONTENT_TYPE_IMAGE_JPEG: - return "image/jpeg" + return model.ContentTypeImageJPEG + case admin_apiv1.ContentType_CONTENT_TYPE_APPLICATION_ZIP: + return model.ContentTypeApplicationZIP + case admin_apiv1.ContentType_CONTENT_TYPE_APPLICATION_PDF: + return model.ContentTypeApplicationPDF + case admin_apiv1.ContentType_CONTENT_TYPE_TEXT_CSV: + return model.ContentTypeTextCSV case admin_apiv1.ContentType_CONTENT_TYPE_UNSPECIFIED: fallthrough default: - return "" + return model.ContentTypeUnknown } } From 87b62107148222d070312936f60d7930bef93d7a Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:21 +0900 Subject: [PATCH 22/30] feat: add content types table --- .../pb/rapid/admin_api/v1/api_asset.pb.go | 200 +++++------------- 1 file changed, 48 insertions(+), 152 deletions(-) diff --git a/internal/infrastructure/grpc/pb/rapid/admin_api/v1/api_asset.pb.go b/internal/infrastructure/grpc/pb/rapid/admin_api/v1/api_asset.pb.go index a537398a..d7c8f933 100644 --- a/internal/infrastructure/grpc/pb/rapid/admin_api/v1/api_asset.pb.go +++ b/internal/infrastructure/grpc/pb/rapid/admin_api/v1/api_asset.pb.go @@ -22,101 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type AssetType int32 - -const ( - AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 - AssetType_ASSET_TYPE_USER_IMAGE AssetType = 1 -) - -// Enum value maps for AssetType. -var ( - AssetType_name = map[int32]string{ - 0: "ASSET_TYPE_UNSPECIFIED", - 1: "ASSET_TYPE_USER_IMAGE", - } - AssetType_value = map[string]int32{ - "ASSET_TYPE_UNSPECIFIED": 0, - "ASSET_TYPE_USER_IMAGE": 1, - } -) - -func (x AssetType) Enum() *AssetType { - p := new(AssetType) - *p = x - return p -} - -func (x AssetType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AssetType) Descriptor() protoreflect.EnumDescriptor { - return file_rapid_admin_api_v1_api_asset_proto_enumTypes[0].Descriptor() -} - -func (AssetType) Type() protoreflect.EnumType { - return &file_rapid_admin_api_v1_api_asset_proto_enumTypes[0] -} - -func (x AssetType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AssetType.Descriptor instead. -func (AssetType) EnumDescriptor() ([]byte, []int) { - return file_rapid_admin_api_v1_api_asset_proto_rawDescGZIP(), []int{0} -} - -type ContentType int32 - -const ( - ContentType_CONTENT_TYPE_UNSPECIFIED ContentType = 0 - ContentType_CONTENT_TYPE_IMAGE_PNG ContentType = 1 - ContentType_CONTENT_TYPE_IMAGE_JPEG ContentType = 2 -) - -// Enum value maps for ContentType. -var ( - ContentType_name = map[int32]string{ - 0: "CONTENT_TYPE_UNSPECIFIED", - 1: "CONTENT_TYPE_IMAGE_PNG", - 2: "CONTENT_TYPE_IMAGE_JPEG", - } - ContentType_value = map[string]int32{ - "CONTENT_TYPE_UNSPECIFIED": 0, - "CONTENT_TYPE_IMAGE_PNG": 1, - "CONTENT_TYPE_IMAGE_JPEG": 2, - } -) - -func (x ContentType) Enum() *ContentType { - p := new(ContentType) - *p = x - return p -} - -func (x ContentType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ContentType) Descriptor() protoreflect.EnumDescriptor { - return file_rapid_admin_api_v1_api_asset_proto_enumTypes[1].Descriptor() -} - -func (ContentType) Type() protoreflect.EnumType { - return &file_rapid_admin_api_v1_api_asset_proto_enumTypes[1] -} - -func (x ContentType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ContentType.Descriptor instead. -func (ContentType) EnumDescriptor() ([]byte, []int) { - return file_rapid_admin_api_v1_api_asset_proto_rawDescGZIP(), []int{1} -} - type CreateAssetPresignedURLRequest struct { state protoimpl.MessageState `protogen:"open.v1"` AssetType AssetType `protobuf:"varint,1,opt,name=asset_type,json=assetType,proto3,enum=rapid.admin_api.v1.AssetType" json:"asset_type,omitempty"` @@ -230,54 +135,46 @@ var file_rapid_admin_api_v1_api_asset_proto_rawDesc = []byte{ 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1f, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x21, 0x92, - 0x41, 0x1e, 0x0a, 0x1c, 0xd2, 0x01, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0xd2, 0x01, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x83, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x50, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x72, 0x6c, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0xd2, 0x01, 0x08, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x2a, 0x42, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x19, 0x0a, 0x15, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x2a, 0x64, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, - 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4e, - 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x4a, 0x50, 0x45, 0x47, 0x10, 0x02, - 0x42, 0xef, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x41, 0x70, 0x69, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x62, 0x79, 0x73, 0x73, 0x70, 0x61, - 0x72, 0x61, 0x6e, 0x6f, 0x69, 0x61, 0x2f, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2d, 0x67, 0x6f, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x62, 0x2f, - 0x72, 0x61, 0x70, 0x69, 0x64, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x3b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, 0x11, 0x52, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x52, 0x61, 0x70, 0x69, 0x64, - 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x52, - 0x61, 0x70, 0x69, 0x64, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, - 0x61, 0x70, 0x69, 0x64, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2f, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, + 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x50, 0x72, + 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x42, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x3a, 0x21, 0x92, 0x41, 0x1e, 0x0a, 0x1c, 0xd2, 0x01, 0x0a, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0xd2, 0x01, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, + 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, + 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, + 0x1b, 0xd2, 0x01, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0d, 0x70, + 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0xef, 0x01, 0x0a, + 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x41, 0x70, 0x69, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x62, 0x79, 0x73, 0x73, 0x70, 0x61, 0x72, 0x61, 0x6e, 0x6f, + 0x69, 0x61, 0x2f, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2d, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x62, 0x2f, 0x72, 0x61, 0x70, 0x69, + 0x64, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, + 0xaa, 0x02, 0x11, 0x52, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, + 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x52, 0x61, 0x70, 0x69, 0x64, 0x5c, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -292,17 +189,16 @@ func file_rapid_admin_api_v1_api_asset_proto_rawDescGZIP() []byte { return file_rapid_admin_api_v1_api_asset_proto_rawDescData } -var file_rapid_admin_api_v1_api_asset_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_rapid_admin_api_v1_api_asset_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_rapid_admin_api_v1_api_asset_proto_goTypes = []any{ - (AssetType)(0), // 0: rapid.admin_api.v1.AssetType - (ContentType)(0), // 1: rapid.admin_api.v1.ContentType - (*CreateAssetPresignedURLRequest)(nil), // 2: rapid.admin_api.v1.CreateAssetPresignedURLRequest - (*CreateAssetPresignedURLResponse)(nil), // 3: rapid.admin_api.v1.CreateAssetPresignedURLResponse + (*CreateAssetPresignedURLRequest)(nil), // 0: rapid.admin_api.v1.CreateAssetPresignedURLRequest + (*CreateAssetPresignedURLResponse)(nil), // 1: rapid.admin_api.v1.CreateAssetPresignedURLResponse + (AssetType)(0), // 2: rapid.admin_api.v1.AssetType + (ContentType)(0), // 3: rapid.admin_api.v1.ContentType } var file_rapid_admin_api_v1_api_asset_proto_depIdxs = []int32{ - 0, // 0: rapid.admin_api.v1.CreateAssetPresignedURLRequest.asset_type:type_name -> rapid.admin_api.v1.AssetType - 1, // 1: rapid.admin_api.v1.CreateAssetPresignedURLRequest.content_type:type_name -> rapid.admin_api.v1.ContentType + 2, // 0: rapid.admin_api.v1.CreateAssetPresignedURLRequest.asset_type:type_name -> rapid.admin_api.v1.AssetType + 3, // 1: rapid.admin_api.v1.CreateAssetPresignedURLRequest.content_type:type_name -> rapid.admin_api.v1.ContentType 2, // [2:2] is the sub-list for method output_type 2, // [2:2] is the sub-list for method input_type 2, // [2:2] is the sub-list for extension type_name @@ -315,19 +211,19 @@ func file_rapid_admin_api_v1_api_asset_proto_init() { if File_rapid_admin_api_v1_api_asset_proto != nil { return } + file_rapid_admin_api_v1_model_asset_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rapid_admin_api_v1_api_asset_proto_rawDesc, - NumEnums: 2, + NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, GoTypes: file_rapid_admin_api_v1_api_asset_proto_goTypes, DependencyIndexes: file_rapid_admin_api_v1_api_asset_proto_depIdxs, - EnumInfos: file_rapid_admin_api_v1_api_asset_proto_enumTypes, MessageInfos: file_rapid_admin_api_v1_api_asset_proto_msgTypes, }.Build() File_rapid_admin_api_v1_api_asset_proto = out.File From 438394ae41d489f56a00cb1cd380fbd0881b6927 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:23 +0900 Subject: [PATCH 23/30] feat: add content types table --- .../pb/rapid/admin_api/v1/model_asset.pb.go | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 internal/infrastructure/grpc/pb/rapid/admin_api/v1/model_asset.pb.go diff --git a/internal/infrastructure/grpc/pb/rapid/admin_api/v1/model_asset.pb.go b/internal/infrastructure/grpc/pb/rapid/admin_api/v1/model_asset.pb.go new file mode 100644 index 00000000..b7b35a2a --- /dev/null +++ b/internal/infrastructure/grpc/pb/rapid/admin_api/v1/model_asset.pb.go @@ -0,0 +1,217 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.1 +// protoc (unknown) +// source: rapid/admin_api/v1/model_asset.proto + +package admin_apiv1 + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type AssetType int32 + +const ( + AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 + AssetType_ASSET_TYPE_USER_IMAGE AssetType = 1 +) + +// Enum value maps for AssetType. +var ( + AssetType_name = map[int32]string{ + 0: "ASSET_TYPE_UNSPECIFIED", + 1: "ASSET_TYPE_USER_IMAGE", + } + AssetType_value = map[string]int32{ + "ASSET_TYPE_UNSPECIFIED": 0, + "ASSET_TYPE_USER_IMAGE": 1, + } +) + +func (x AssetType) Enum() *AssetType { + p := new(AssetType) + *p = x + return p +} + +func (x AssetType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AssetType) Descriptor() protoreflect.EnumDescriptor { + return file_rapid_admin_api_v1_model_asset_proto_enumTypes[0].Descriptor() +} + +func (AssetType) Type() protoreflect.EnumType { + return &file_rapid_admin_api_v1_model_asset_proto_enumTypes[0] +} + +func (x AssetType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AssetType.Descriptor instead. +func (AssetType) EnumDescriptor() ([]byte, []int) { + return file_rapid_admin_api_v1_model_asset_proto_rawDescGZIP(), []int{0} +} + +type ContentType int32 + +const ( + ContentType_CONTENT_TYPE_UNSPECIFIED ContentType = 0 + ContentType_CONTENT_TYPE_IMAGE_PNG ContentType = 1 + ContentType_CONTENT_TYPE_IMAGE_JPEG ContentType = 2 + ContentType_CONTENT_TYPE_APPLICATION_ZIP ContentType = 3 + ContentType_CONTENT_TYPE_APPLICATION_PDF ContentType = 4 + ContentType_CONTENT_TYPE_TEXT_CSV ContentType = 5 +) + +// Enum value maps for ContentType. +var ( + ContentType_name = map[int32]string{ + 0: "CONTENT_TYPE_UNSPECIFIED", + 1: "CONTENT_TYPE_IMAGE_PNG", + 2: "CONTENT_TYPE_IMAGE_JPEG", + 3: "CONTENT_TYPE_APPLICATION_ZIP", + 4: "CONTENT_TYPE_APPLICATION_PDF", + 5: "CONTENT_TYPE_TEXT_CSV", + } + ContentType_value = map[string]int32{ + "CONTENT_TYPE_UNSPECIFIED": 0, + "CONTENT_TYPE_IMAGE_PNG": 1, + "CONTENT_TYPE_IMAGE_JPEG": 2, + "CONTENT_TYPE_APPLICATION_ZIP": 3, + "CONTENT_TYPE_APPLICATION_PDF": 4, + "CONTENT_TYPE_TEXT_CSV": 5, + } +) + +func (x ContentType) Enum() *ContentType { + p := new(ContentType) + *p = x + return p +} + +func (x ContentType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ContentType) Descriptor() protoreflect.EnumDescriptor { + return file_rapid_admin_api_v1_model_asset_proto_enumTypes[1].Descriptor() +} + +func (ContentType) Type() protoreflect.EnumType { + return &file_rapid_admin_api_v1_model_asset_proto_enumTypes[1] +} + +func (x ContentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ContentType.Descriptor instead. +func (ContentType) EnumDescriptor() ([]byte, []int) { + return file_rapid_admin_api_v1_model_asset_proto_rawDescGZIP(), []int{1} +} + +var File_rapid_admin_api_v1_model_asset_proto protoreflect.FileDescriptor + +var file_rapid_admin_api_v1_model_asset_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2a, 0x42, 0x0a, 0x09, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x53, 0x53, 0x45, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x2a, 0xc3, + 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, + 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, + 0x47, 0x45, 0x5f, 0x50, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x54, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x4a, + 0x50, 0x45, 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x5a, 0x49, 0x50, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x54, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x44, 0x46, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, + 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x43, + 0x53, 0x56, 0x10, 0x05, 0x42, 0xf1, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x70, + 0x69, 0x64, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, + 0x0f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x60, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, + 0x62, 0x79, 0x73, 0x73, 0x70, 0x61, 0x72, 0x61, 0x6e, 0x6f, 0x69, 0x61, 0x2f, 0x72, 0x61, 0x70, + 0x69, 0x64, 0x2d, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x2f, 0x70, 0x62, 0x2f, 0x72, 0x61, 0x70, 0x69, 0x64, 0x2f, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, 0x11, 0x52, 0x61, 0x70, + 0x69, 0x64, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x11, 0x52, 0x61, 0x70, 0x69, 0x64, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x69, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x52, 0x61, 0x70, 0x69, 0x64, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61, 0x70, 0x69, 0x64, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_rapid_admin_api_v1_model_asset_proto_rawDescOnce sync.Once + file_rapid_admin_api_v1_model_asset_proto_rawDescData = file_rapid_admin_api_v1_model_asset_proto_rawDesc +) + +func file_rapid_admin_api_v1_model_asset_proto_rawDescGZIP() []byte { + file_rapid_admin_api_v1_model_asset_proto_rawDescOnce.Do(func() { + file_rapid_admin_api_v1_model_asset_proto_rawDescData = protoimpl.X.CompressGZIP(file_rapid_admin_api_v1_model_asset_proto_rawDescData) + }) + return file_rapid_admin_api_v1_model_asset_proto_rawDescData +} + +var file_rapid_admin_api_v1_model_asset_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_rapid_admin_api_v1_model_asset_proto_goTypes = []any{ + (AssetType)(0), // 0: rapid.admin_api.v1.AssetType + (ContentType)(0), // 1: rapid.admin_api.v1.ContentType +} +var file_rapid_admin_api_v1_model_asset_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_rapid_admin_api_v1_model_asset_proto_init() } +func file_rapid_admin_api_v1_model_asset_proto_init() { + if File_rapid_admin_api_v1_model_asset_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rapid_admin_api_v1_model_asset_proto_rawDesc, + NumEnums: 2, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_rapid_admin_api_v1_model_asset_proto_goTypes, + DependencyIndexes: file_rapid_admin_api_v1_model_asset_proto_depIdxs, + EnumInfos: file_rapid_admin_api_v1_model_asset_proto_enumTypes, + }.Build() + File_rapid_admin_api_v1_model_asset_proto = out.File + file_rapid_admin_api_v1_model_asset_proto_rawDesc = nil + file_rapid_admin_api_v1_model_asset_proto_goTypes = nil + file_rapid_admin_api_v1_model_asset_proto_depIdxs = nil +} From 7633a2cb8fefb51ff13cf48a3ad1e32fd8abb51e Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:26 +0900 Subject: [PATCH 24/30] feat: add content types table --- internal/infrastructure/s3/repository/asset.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/infrastructure/s3/repository/asset.go b/internal/infrastructure/s3/repository/asset.go index cf787322..0d6f402c 100644 --- a/internal/infrastructure/s3/repository/asset.go +++ b/internal/infrastructure/s3/repository/asset.go @@ -5,6 +5,7 @@ import ( "time" "github.com/abyssparanoia/rapid-go/internal/domain/errors" + "github.com/abyssparanoia/rapid-go/internal/domain/model" "github.com/abyssparanoia/rapid-go/internal/domain/repository" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/s3" @@ -30,14 +31,14 @@ func NewAsset( func (r *asset) GenerateWritePresignedURL( ctx context.Context, - contentType string, + contentType model.ContentType, path string, expires time.Duration, ) (string, error) { req, err := r.presignCli.PresignPutObject(ctx, &s3.PutObjectInput{ Bucket: aws.String(r.bucketName), Key: aws.String(path), - ContentType: aws.String(contentType), + ContentType: aws.String(contentType.String()), }, func(opts *s3.PresignOptions) { opts.Expires = expires }) From 8f8a382b5d47467fb539588271517ce29cde0244 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:28 +0900 Subject: [PATCH 25/30] feat: add content types table --- internal/usecase/input/admin_asset.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/usecase/input/admin_asset.go b/internal/usecase/input/admin_asset.go index f0285b7e..c5e82689 100644 --- a/internal/usecase/input/admin_asset.go +++ b/internal/usecase/input/admin_asset.go @@ -10,13 +10,13 @@ import ( ) type AdminCreateAssetPresignedURL struct { - ContentType string `validate:"required"` - AssetType model.AssetType `validate:"required"` - RequestTime time.Time `validate:"required"` + ContentType model.ContentType `validate:"required"` + AssetType model.AssetType `validate:"required"` + RequestTime time.Time `validate:"required"` } func NewAdminCreateAssetPresignedURL( - contentType string, + contentType model.ContentType, assetType model.AssetType, requestTime time.Time, ) *AdminCreateAssetPresignedURL { @@ -35,5 +35,9 @@ func (p *AdminCreateAssetPresignedURL) Validate() error { return errors.RequestInvalidArgumentErr.New(). WithDetail(fmt.Sprintf("invalid asset type %s", p.AssetType)) } + if !p.ContentType.Valid() { + return errors.RequestInvalidArgumentErr.New(). + WithDetail(fmt.Sprintf("invalid content type %s", p.ContentType)) + } return nil } From 0503b4e3a51cf02319a25ad3435eac9bf631a199 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:30 +0900 Subject: [PATCH 26/30] feat: add content types table --- schema/openapi/rapid/admin_api/v1/api.swagger.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/schema/openapi/rapid/admin_api/v1/api.swagger.json b/schema/openapi/rapid/admin_api/v1/api.swagger.json index 086fa9f8..4b07f213 100644 --- a/schema/openapi/rapid/admin_api/v1/api.swagger.json +++ b/schema/openapi/rapid/admin_api/v1/api.swagger.json @@ -223,7 +223,10 @@ "enum": [ "CONTENT_TYPE_UNSPECIFIED", "CONTENT_TYPE_IMAGE_PNG", - "CONTENT_TYPE_IMAGE_JPEG" + "CONTENT_TYPE_IMAGE_JPEG", + "CONTENT_TYPE_APPLICATION_ZIP", + "CONTENT_TYPE_APPLICATION_PDF", + "CONTENT_TYPE_TEXT_CSV" ], "default": "CONTENT_TYPE_UNSPECIFIED" }, From 73f79298e58e06dbeab034da17c676a1fe45f635 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:33 +0900 Subject: [PATCH 27/30] feat: add content types table --- schema/proto/rapid/admin_api/v1/api_asset.proto | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/schema/proto/rapid/admin_api/v1/api_asset.proto b/schema/proto/rapid/admin_api/v1/api_asset.proto index f8913beb..53e63db0 100644 --- a/schema/proto/rapid/admin_api/v1/api_asset.proto +++ b/schema/proto/rapid/admin_api/v1/api_asset.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package rapid.admin_api.v1; import "protoc-gen-openapiv2/options/annotations.proto"; +import "rapid/admin_api/v1/model_asset.proto"; message CreateAssetPresignedURLRequest { AssetType asset_type = 1; @@ -31,14 +32,3 @@ message CreateAssetPresignedURLResponse { } }; } - -enum AssetType { - ASSET_TYPE_UNSPECIFIED = 0; - ASSET_TYPE_USER_IMAGE = 1; -} - -enum ContentType { - CONTENT_TYPE_UNSPECIFIED = 0; - CONTENT_TYPE_IMAGE_PNG = 1; - CONTENT_TYPE_IMAGE_JPEG = 2; -} From f0adb77e762fc9b75f99d439d82ee9a97245f9d9 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:35 +0900 Subject: [PATCH 28/30] feat: add content types table --- .../proto/rapid/admin_api/v1/model_asset.proto | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 schema/proto/rapid/admin_api/v1/model_asset.proto diff --git a/schema/proto/rapid/admin_api/v1/model_asset.proto b/schema/proto/rapid/admin_api/v1/model_asset.proto new file mode 100644 index 00000000..84b9cd0b --- /dev/null +++ b/schema/proto/rapid/admin_api/v1/model_asset.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package rapid.admin_api.v1; + +enum AssetType { + ASSET_TYPE_UNSPECIFIED = 0; + ASSET_TYPE_USER_IMAGE = 1; +} + +enum ContentType { + CONTENT_TYPE_UNSPECIFIED = 0; + CONTENT_TYPE_IMAGE_PNG = 1; + CONTENT_TYPE_IMAGE_JPEG = 2; + CONTENT_TYPE_APPLICATION_ZIP = 3; + CONTENT_TYPE_APPLICATION_PDF = 4; + CONTENT_TYPE_TEXT_CSV = 5; +} From 2bd68c69fd10f63dd350a161bbf6fc28c25b9fba Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:40 +0900 Subject: [PATCH 29/30] feat: add content types table --- go.mod | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 8f949852..d5792462 100644 --- a/go.mod +++ b/go.mod @@ -51,6 +51,7 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20241230172942-26aa7a208def google.golang.org/grpc v1.69.2 google.golang.org/protobuf v1.36.1 + gopkg.in/yaml.v2 v2.4.0 mvdan.cc/gofumpt v0.7.0 ) @@ -98,11 +99,11 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/hcsshim v0.12.9 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect - github.com/alecthomas/assert/v2 v2.11.0 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.5 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect + github.com/alingse/nilnesserr v0.1.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect @@ -211,7 +212,6 @@ require ( github.com/golangci/go-printf-func-name v0.1.0 // indirect github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 // indirect github.com/golangci/misspell v0.6.0 // indirect - github.com/golangci/modinfo v0.3.4 // indirect github.com/golangci/plugin-module-register v0.1.1 // indirect github.com/golangci/revgrep v0.5.3 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect @@ -227,8 +227,10 @@ require ( github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/huandu/xstrings v1.3.2 // indirect @@ -252,8 +254,11 @@ require ( github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect + github.com/ldez/exptostd v0.3.1 // indirect github.com/ldez/gomoddirectives v0.6.0 // indirect + github.com/ldez/grignotin v0.7.0 // indirect github.com/ldez/tagliatelle v0.7.1 // indirect + github.com/ldez/usetesting v0.4.2 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect @@ -323,7 +328,7 @@ require ( github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect - github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect github.com/securego/gosec/v2 v2.21.4 // indirect @@ -403,7 +408,6 @@ require ( google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/tools v0.5.1 // indirect mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect From c7a2965393d728e2899e58c663e4de209d12eb9f Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 4 Jan 2025 15:35:42 +0900 Subject: [PATCH 30/30] feat: add content types table --- go.sum | 124 +++++++++++++++++++++------------------------------------ 1 file changed, 46 insertions(+), 78 deletions(-) diff --git a/go.sum b/go.sum index 38d0e812..ad0ab174 100644 --- a/go.sum +++ b/go.sum @@ -652,8 +652,7 @@ firebase.google.com/go v3.13.0+incompatible h1:3TdYC3DDi6aHn20qoRkxwGqNgdjtblwVA firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIwjt8toICdV5Wh9ptHs= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8= -github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0= +github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4= github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4= github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= @@ -661,8 +660,7 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= -github.com/Antonboom/nilnil v1.0.0 h1:n+v+B12dsE5tbAqRODXmEKfZv9j2KcTBrp+LkoM4HZk= -github.com/Antonboom/nilnil v1.0.0/go.mod h1:fDJ1FSFoLN6yoG65ANb1WihItf6qt9PJVTn/s2IrcII= +github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= @@ -724,13 +722,11 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE= -github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E= github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I= -github.com/alecthomas/go-check-sumtype v0.2.0 h1:Bo+e4DFf3rs7ME9w/0SU/g6nmzJaphduP8Cjiz0gbwY= -github.com/alecthomas/go-check-sumtype v0.2.0/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= +github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= @@ -745,6 +741,8 @@ github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pO github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/alingse/nilnesserr v0.1.1 h1:7cYuJewpy9jFNMEA72Q1+3Nm3zKHzg+Q28D5f2bBFUA= +github.com/alingse/nilnesserr v0.1.1/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= @@ -762,8 +760,7 @@ github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c h1:651/eoCRnQ7YtS github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0= github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= @@ -840,8 +837,7 @@ github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHf github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw= -github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= +github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -861,11 +857,9 @@ github.com/bufbuild/protoplugin v0.0.0-20240911180120-7bb73e41a54a h1:l3RhVoG0Rt github.com/bufbuild/protoplugin v0.0.0-20240911180120-7bb73e41a54a/go.mod h1:c5D8gWRIZ2HLWO3gXYTtUfw/hbJyD8xikv2ooPxnklQ= github.com/bufbuild/protovalidate-go v0.8.0 h1:Xs3kCLCJ4tQiogJ0iOXm+ClKw/KviW3nLAryCGW2I3Y= github.com/bufbuild/protovalidate-go v0.8.0/go.mod h1:JPWZInGm2y2NBg3vKDKdDIkvDjyLv31J3hLH5GIFc/Q= -github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= -github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= +github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= -github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= -github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= +github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/caarlos0/env/v11 v11.3.1 h1:cArPWC15hWmEt+gWk7YBi7lEXTXCvpaSdCiZE2X5mCA= github.com/caarlos0/env/v11 v11.3.1/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U= @@ -901,8 +895,7 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/ckaznocha/intrange v0.2.1 h1:M07spnNEQoALOJhwrImSrJLaxwuiQK+hA2DeajBlwYk= -github.com/ckaznocha/intrange v0.2.1/go.mod h1:7NEhVyf8fzZO5Ds7CRaqPEm52Ut83hsTiL5zbER/HYk= +github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= @@ -958,8 +951,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6N github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.23 h1:4M6+isWdcStXEf15G/RbrMPOQj1dZ7HPZCGwE4kOeP0= github.com/creack/pty v1.1.23/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= -github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= @@ -1127,8 +1119,7 @@ github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUN github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= @@ -1222,16 +1213,12 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= -github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= -github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= +github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 h1:t5wybL6RtO83VwoMOb7U/Peqe3gGKQlPIC66wXmnkvM= github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9/go.mod h1:Ag3L7sh7E28qAp/5xnpMMTuGYqxLZoSaEHZDkZB1RgU= -github.com/golangci/golangci-lint v1.62.2 h1:b8K5K9PN+rZN1+mKLtsZHz2XXS9aYKzQ9i25x3Qnxxw= -github.com/golangci/golangci-lint v1.62.2/go.mod h1:ILWWyeFUrctpHVGMa1dg2xZPKoMUTc5OIMgW7HZr34g= +github.com/golangci/golangci-lint v1.63.3 h1:Q/UZqLRuqo3mmwA/EN2pq9y+JV4S2IqmqrS3t855ZMc= github.com/golangci/golangci-lint v1.63.3/go.mod h1:Hx0B7Lg5/NXbaOHem8+KU+ZUIzMI6zNj/7tFwdnn10I= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= -github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= -github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= @@ -1332,8 +1319,8 @@ github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3 github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= -github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= -github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= +github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -1356,6 +1343,8 @@ github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -1367,12 +1356,13 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= @@ -1417,8 +1407,7 @@ github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjz github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= -github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= +github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= @@ -1432,8 +1421,7 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= -github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -1484,12 +1472,16 @@ github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= -github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= +github.com/ldez/exptostd v0.3.1 h1:90yWWoAKMFHeovTK8uzBms9Ppp8Du/xQ20DRO26Ymrw= +github.com/ldez/exptostd v0.3.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/gomoddirectives v0.6.0 h1:Jyf1ZdTeiIB4dd+2n4qw+g4aI9IJ6JyfOZ8BityWvnA= github.com/ldez/gomoddirectives v0.6.0/go.mod h1:TuwOGYoPAoENDWQpe8DMqEm5nIfjrxZXmxX/CExWyZ4= -github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= -github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= +github.com/ldez/grignotin v0.7.0 h1:vh0dI32WhHaq6LLPZ38g7WxXuZ1+RzyrJ7iPG9JMa8c= +github.com/ldez/grignotin v0.7.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= +github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= +github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= @@ -1625,8 +1617,7 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.18.3 h1:WgS7X3zzmni3vwHSBhvSgqrRgUecN6PQUcfB0j1noDw= -github.com/nunnatsa/ginkgolinter v0.18.3/go.mod h1:BE1xyB/PNtXXG1azrvrqJW5eFH0hSRylNzFy8QHPwzs= +github.com/nunnatsa/ginkgolinter v0.18.4 h1:zmX4KUR+6fk/vhUFt8DOP6KwznekhkmVSzzVJve2vyM= github.com/nunnatsa/ginkgolinter v0.18.4/go.mod h1:AMEane4QQ6JwFz5GgjI5xLUM9S/CylO+UyM97fN2iBI= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= @@ -1732,8 +1723,7 @@ github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= -github.com/raeperd/recvcheck v0.1.2 h1:SjdquRsRXJc26eSonWIo8b7IMtKD3OAT2Lb5G3ZX1+4= -github.com/raeperd/recvcheck v0.1.2/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= +github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= @@ -1761,15 +1751,13 @@ github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9f github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= -github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= -github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI= -github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk= @@ -1825,8 +1813,7 @@ github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= @@ -1853,8 +1840,7 @@ github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= -github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= +github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= github.com/tdewolff/minify/v2 v2.20.37 h1:Q97cx4STXCh1dlWDlNHZniE8BJ2EBL0+2b0n92BJQhw= github.com/tdewolff/minify/v2 v2.20.37/go.mod h1:L1VYef/jwKw6Wwyk5A+T0mBjjn3mMPgmjjA688RNsxU= @@ -1867,33 +1853,26 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.18 h1:ouX3XGiziKDypbpXqShBfnNLTSjR8r3/HVzrtJ+bHlI= -github.com/tetafro/godot v1.4.18/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E= github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= github.com/tetratelabs/wazero v1.8.2 h1:yIgLR/b2bN31bjxwXHD8a3d+BogigR952csSDdLYEv4= github.com/tetratelabs/wazero v1.8.2/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tomarrell/wrapcheck/v2 v2.9.0 h1:801U2YCAjLhdN8zhZ/7tdjB3EnAoRlJHt/s+9hijLQ4= -github.com/tomarrell/wrapcheck/v2 v2.9.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= +github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= -github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= +github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= -github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ= -github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= +github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= -github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= -github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= +github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= -github.com/uudashr/iface v1.2.1 h1:vHHyzAUmWZ64Olq6NZT3vg/z1Ws56kyPdBOd5kTXDF8= -github.com/uudashr/iface v1.2.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= +github.com/uudashr/iface v1.3.0 h1:zwPch0fs9tdh9BmL5kcgSpvnObV+yHjO4JjVBl8IA10= github.com/uudashr/iface v1.3.0/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= @@ -2023,7 +2002,6 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= @@ -2091,7 +2069,6 @@ golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -2156,7 +2133,6 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= @@ -2331,7 +2307,6 @@ golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= @@ -2441,7 +2416,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= @@ -2675,14 +2649,8 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8 h1:st3LcW/BPi75W4q1jJTEor/QWwbNlPlDG0JTn6XhZu0= -google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:klhJGKFyG8Tn50enBn7gizg4nXGXJ+jqEREdCWaPcV4= -google.golang.org/genproto/googleapis/api v0.0.0-20241230172942-26aa7a208def h1:0Km0hi+g2KXbXL0+riZzSCKz23f4MmwicuEb00JeonI= -google.golang.org/genproto/googleapis/api v0.0.0-20241230172942-26aa7a208def/go.mod h1:u2DoMSpCXjrzqLdobRccQMc9wrnMAJ1DLng0a2yqM2Q= google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d h1:H8tOf8XM88HvKqLTxe755haY6r1fqqzLbEnfrmLXlSA= google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d/go.mod h1:2v7Z7gP2ZUOGsaFyxATQSRoBnKygqVq2Cwnvom7QiqY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241230172942-26aa7a208def h1:4P81qv5JXI/sDNae2ClVx88cgDDA6DPilADkG9tYKz8= google.golang.org/genproto/googleapis/rpc v0.0.0-20241230172942-26aa7a208def/go.mod h1:bdAgzvd4kFrpykc5/AC2eLUiegK9T/qxZHD4hXYf/ho= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=