Skip to content

Commit 15dde54

Browse files
authored
feat: unify file type (#1840)
* feat: unify file type * refactor: fix tests * refactor: fix arg * refactor: change test env * refactor: fix deploy env, fix migration, fix test fixtures
1 parent 1eeec20 commit 15dde54

56 files changed

Lines changed: 262 additions & 341 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/deploy-prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ jobs:
144144
REFRESH_TOKEN_JWT_SECRET=${{ secrets.REFRESH_TOKEN_JWT_SECRET }}
145145
S3_FILE_ITEM_ACCESS_KEY_ID=${{ secrets.S3_FILE_ITEM_ACCESS_KEY_ID }}
146146
S3_FILE_ITEM_BUCKET=${{ vars.S3_FILE_ITEM_BUCKET }}
147-
S3_FILE_ITEM_PLUGIN=${{ vars.S3_FILE_ITEM_PLUGIN }}
147+
FILE_STORAGE_TYPE=${{ vars.FILE_STORAGE_TYPE }}
148148
S3_FILE_ITEM_REGION=${{ vars.S3_FILE_ITEM_REGION }}
149149
S3_FILE_ITEM_SECRET_ACCESS_KEY=${{ secrets.S3_FILE_ITEM_SECRET_ACCESS_KEY }}
150150
SECURE_SESSION_SECRET_KEY=${{ secrets.SECURE_SESSION_SECRET_KEY }}

.github/workflows/deploy-stage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ jobs:
145145
REFRESH_TOKEN_JWT_SECRET=${{ secrets.REFRESH_TOKEN_JWT_SECRET }}
146146
S3_FILE_ITEM_ACCESS_KEY_ID=${{ secrets.S3_FILE_ITEM_ACCESS_KEY_ID }}
147147
S3_FILE_ITEM_BUCKET=${{ vars.S3_FILE_ITEM_BUCKET }}
148-
S3_FILE_ITEM_PLUGIN=${{ vars.S3_FILE_ITEM_PLUGIN }}
148+
FILE_STORAGE_TYPE=${{ vars.FILE_STORAGE_TYPE }}
149149
S3_FILE_ITEM_REGION=${{ vars.S3_FILE_ITEM_REGION }}
150150
S3_FILE_ITEM_SECRET_ACCESS_KEY=${{ secrets.S3_FILE_ITEM_SECRET_ACCESS_KEY }}
151151
SECURE_SESSION_SECRET_KEY=${{ secrets.SECURE_SESSION_SECRET_KEY }}

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ env:
3131
ETHERPAD_URL: 'http://etherpad:9001'
3232
LIBRARY_CLIENT_HOST: 'http://localhost:3113'
3333
FILE_STORAGE_ROOT_PATH: /
34-
H5P_FILE_STORAGE_TYPE: file
34+
H5P_FILE_STORAGE_TYPE: local
3535
H5P_PATH_PREFIX: h5p-content/
3636
H5P_STORAGE_ROOT_PATH: /tmp/h5p
3737
H5P_FILE_STORAGE_HOST: http://localhost:1081
@@ -47,7 +47,7 @@ env:
4747
REFRESH_TOKEN_JWT_SECRET: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
4848
S3_FILE_ITEM_ACCESS_KEY_ID: graasp-user
4949
S3_FILE_ITEM_BUCKET: graasp
50-
S3_FILE_ITEM_PLUGIN: true
50+
FILE_STORAGE_TYPE: s3
5151
S3_FILE_ITEM_REGION: us-east-1
5252
S3_FILE_ITEM_SECRET_ACCESS_KEY: graasp-pwd
5353
SECURE_SESSION_SECRET_KEY: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Graasp Backend
2+
23
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
4+
35
[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
6+
47
<!-- ALL-CONTRIBUTORS-BADGE:END -->
58

69
[![GitHub Release](https://img.shields.io/github/release/graasp/graasp)]()
@@ -162,14 +165,14 @@ EMAIL_CHANGE_JWT_EXPIRATION_IN_MINUTES=1440
162165
# FILE_STORAGE_HOST=http://localhost:1081
163166

164167
# Graasp s3 file item
165-
S3_FILE_ITEM_PLUGIN=false
168+
FILE_STORAGE_TYPE=s3
166169
S3_FILE_ITEM_REGION=us-east-1
167170
S3_FILE_ITEM_BUCKET=graasp
168171
S3_FILE_ITEM_ACCESS_KEY_ID=graasp-user
169172
S3_FILE_ITEM_SECRET_ACCESS_KEY=graasp-pwd
170173

171174
# Graasp H5P
172-
H5P_FILE_STORAGE_TYPE=file
175+
H5P_FILE_STORAGE_TYPE=local
173176
H5P_STORAGE_ROOT_PATH=/tmp/graasp-h5p/
174177
H5P_PATH_PREFIX=h5p-content/
175178
H5P_FILE_STORAGE_HOST=http://localhost:1081

docker/compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ services:
6060
MAILER_CONFIG_PASSWORD: docker
6161

6262
# H5P configuration
63-
H5P_FILE_STORAGE_TYPE: file
63+
H5P_FILE_STORAGE_TYPE: local
6464
H5P_STORAGE_ROOT_PATH: /tmp/graasp-h5p/
6565
H5P_PATH_PREFIX: h5p-content/
6666
H5P_FILE_STORAGE_HOST: http://localhost:1081

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
"@fastify/type-provider-typebox": "5.1.0",
6363
"@fastify/websocket": "11.0.2",
6464
"@graasp/etherpad-api": "2.1.1",
65-
"@graasp/sdk": "5.12.0",
65+
"@graasp/sdk": "5.13.0",
6666
"@graasp/translations": "1.44.0",
6767
"@rapideditor/country-coder": "5.4.0",
6868
"@sentry/node": "7.119.2",

src/di/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const FASTIFY_LOGGER_DI_KEY = 'FastifyBaseLogger';
2-
export const FILE_ITEM_TYPE_DI_KEY = 'FileItemType';
2+
export const FILE_STORAGE_TYPE_DI_KEY = 'FileStorageType';
33
export const IMAGE_CLASSIFIER_API_DI_KEY = 'ImageClassifierAPI';
44
export const GEOLOCATION_API_KEY_DI_KEY = 'GeolocationAPIKey';
55
export const IFRAMELY_API_DI_KEY = 'IframelyAPI';

src/di/container.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { SearchService } from '../services/item/plugins/publication/published/pl
1818
import {
1919
EMBEDDED_LINK_ITEM_IFRAMELY_HREF_ORIGIN,
2020
FILE_ITEM_PLUGIN_OPTIONS,
21-
FILE_ITEM_TYPE,
21+
FILE_STORAGE_TYPE,
2222
GEOLOCATION_API_KEY,
2323
IMAGE_CLASSIFIER_API,
2424
MAILER_CONFIG_FROM_EMAIL,
@@ -38,8 +38,8 @@ import {
3838
import {
3939
ETHERPAD_NAME_FACTORY_DI_KEY,
4040
FASTIFY_LOGGER_DI_KEY,
41-
FILE_ITEM_TYPE_DI_KEY,
4241
FILE_SERVICE_URLS_CACHING_DI_KEY,
42+
FILE_STORAGE_TYPE_DI_KEY,
4343
GEOLOCATION_API_KEY_DI_KEY,
4444
IFRAMELY_API_DI_KEY,
4545
IMAGE_CLASSIFIER_API_DI_KEY,
@@ -52,8 +52,8 @@ export const registerDependencies = (instance: FastifyInstance) => {
5252
// register FastifyBasLogger as a value to allow BaseLogger to be injected automatically.
5353
registerValue(FASTIFY_LOGGER_DI_KEY, log);
5454

55-
// register file type for the StorageService.
56-
registerValue(FILE_ITEM_TYPE_DI_KEY, FILE_ITEM_TYPE);
55+
// register file storage type for the StorageService.
56+
registerValue(FILE_STORAGE_TYPE_DI_KEY, FILE_STORAGE_TYPE);
5757

5858
// register classifier key for the ValidationService.
5959
registerValue(IMAGE_CLASSIFIER_API_DI_KEY, IMAGE_CLASSIFIER_API);
@@ -80,7 +80,7 @@ export const registerDependencies = (instance: FastifyInstance) => {
8080
new CachingService(resolveDependency(Redis), 'file_service_url_caching'),
8181
);
8282
// Register the FileService to inject the CacheService.
83-
const fileRepository = fileRepositoryFactory(FILE_ITEM_TYPE, {
83+
const fileRepository = fileRepositoryFactory(FILE_STORAGE_TYPE, {
8484
s3: S3_FILE_ITEM_PLUGIN_OPTIONS,
8585
local: FILE_ITEM_PLUGIN_OPTIONS,
8686
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
UPDATE item SET type = 'file', extra = CONCAT('{"file":', extra->>'s3File', '}')::jsonb WHERE type = 's3File' AND extra->>'s3File' IS NOT NULL;--> statement-breakpoint
2+
3+
UPDATE app_data SET data = CONCAT('{"file":', data->>'s3File', '}')::jsonb WHERE type = 'file' AND data->>'s3File' IS NOT NULL;--> statement-breakpoint
4+
5+
UPDATE app_setting SET data = CONCAT('{"file":', data->>'s3File', '}')::jsonb WHERE data->>'s3File' IS NOT NULL;--> statement-breakpoint

src/drizzle/meta/_journal.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@
3636
"when": 1745928219011,
3737
"tag": "0004_maintenance",
3838
"breakpoints": true
39+
},
40+
{
41+
"idx": 5,
42+
"version": "7",
43+
"when": 1745928229011,
44+
"tag": "0005_unify-file-type",
45+
"breakpoints": true
3946
}
4047
]
4148
}

0 commit comments

Comments
 (0)