chore: Refactor file storage (#5711)

This commit is contained in:
Tom Moor
2023-08-20 10:04:34 -04:00
committed by GitHub
parent 4354e1055e
commit 74722b80f2
68 changed files with 496 additions and 313 deletions

View File

@@ -1,6 +1,6 @@
import { sequelize } from "@server/database/sequelize";
import Logger from "@server/logging/Logger";
import { WebhookSubscription, ApiKey, User } from "@server/models";
import { sequelize } from "@server/storage/database";
import BaseTask from "./BaseTask";
type Props = {

View File

@@ -1,9 +1,9 @@
import { NotificationEventType } from "@shared/types";
import subscriptionCreator from "@server/commands/subscriptionCreator";
import { sequelize } from "@server/database/sequelize";
import { Comment, Document, Notification, User } from "@server/models";
import NotificationHelper from "@server/models/helpers/NotificationHelper";
import ProsemirrorHelper from "@server/models/helpers/ProsemirrorHelper";
import { sequelize } from "@server/storage/database";
import { CommentEvent } from "@server/types";
import BaseTask, { TaskPriority } from "./BaseTask";

View File

@@ -1,7 +1,7 @@
import { Op } from "sequelize";
import documentMover from "@server/commands/documentMover";
import { sequelize } from "@server/database/sequelize";
import { Collection, Document, User } from "@server/models";
import { sequelize } from "@server/storage/database";
import BaseTask from "./BaseTask";
type Props = {

View File

@@ -6,7 +6,7 @@ import ExportSuccessEmail from "@server/emails/templates/ExportSuccessEmail";
import Logger from "@server/logging/Logger";
import { Collection, Event, FileOperation, Team, User } from "@server/models";
import fileOperationPresenter from "@server/presenters/fileOperation";
import { uploadToS3 } from "@server/utils/s3";
import FileStorage from "@server/storage/files";
import BaseTask, { TaskPriority } from "./BaseTask";
type Props = {
@@ -60,7 +60,7 @@ export default abstract class ExportTask extends BaseTask<Props> {
});
const stat = await fs.promises.stat(filePath);
const url = await uploadToS3({
const url = await FileStorage.upload({
body: fs.createReadStream(filePath),
contentLength: stat.size,
contentType: "application/zip",

View File

@@ -1,4 +1,3 @@
import { S3 } from "aws-sdk";
import truncate from "lodash/truncate";
import {
CollectionPermission,
@@ -8,7 +7,6 @@ import {
import { CollectionValidation } from "@shared/validations";
import attachmentCreator from "@server/commands/attachmentCreator";
import documentCreator from "@server/commands/documentCreator";
import { sequelize } from "@server/database/sequelize";
import { serializer } from "@server/editor";
import { InternalError, ValidationError } from "@server/errors";
import Logger from "@server/logging/Logger";
@@ -20,6 +18,7 @@ import {
FileOperation,
Attachment,
} from "@server/models";
import { sequelize } from "@server/storage/database";
import BaseTask, { TaskPriority } from "./BaseTask";
type Props = {
@@ -207,7 +206,7 @@ export default abstract class ImportTask extends BaseTask<Props> {
* @returns A promise that resolves to the structured data
*/
protected abstract parseData(
data: S3.Body,
data: Buffer | NodeJS.ReadableStream,
fileOperation: FileOperation
): Promise<StructuredImportData>;

View File

@@ -1,9 +1,9 @@
import { subDays } from "date-fns";
import { Op } from "sequelize";
import { sequelize } from "@server/database/sequelize";
import InviteReminderEmail from "@server/emails/templates/InviteReminderEmail";
import { User } from "@server/models";
import { UserFlag } from "@server/models/User";
import { sequelize } from "@server/storage/database";
import BaseTask, { TaskPriority, TaskSchedule } from "./BaseTask";
type Props = undefined;

View File

@@ -1,6 +1,6 @@
import { v4 as uuidv4 } from "uuid";
import { Team } from "@server/models";
import { uploadToS3FromUrl } from "@server/utils/s3";
import FileStorage from "@server/storage/files";
import BaseTask, { TaskPriority } from "./BaseTask";
type Props = {
@@ -20,7 +20,7 @@ export default class UploadTeamAvatarTask extends BaseTask<Props> {
rejectOnEmpty: true,
});
const avatarUrl = await uploadToS3FromUrl(
const avatarUrl = await FileStorage.uploadFromUrl(
props.avatarUrl,
`avatars/${team.id}/${uuidv4()}`,
"public-read"

View File

@@ -1,6 +1,6 @@
import { v4 as uuidv4 } from "uuid";
import { User } from "@server/models";
import { uploadToS3FromUrl } from "@server/utils/s3";
import FileStorage from "@server/storage/files";
import BaseTask, { TaskPriority } from "./BaseTask";
type Props = {
@@ -20,7 +20,7 @@ export default class UploadUserAvatarTask extends BaseTask<Props> {
rejectOnEmpty: true,
});
const avatarUrl = await uploadToS3FromUrl(
const avatarUrl = await FileStorage.uploadFromUrl(
props.avatarUrl,
`avatars/${user.id}/${uuidv4()}`,
"public-read"

View File

@@ -1,6 +1,6 @@
import { sequelize } from "@server/database/sequelize";
import Logger from "@server/logging/Logger";
import { User, UserAuthentication } from "@server/models";
import { sequelize } from "@server/storage/database";
import BaseTask, { TaskPriority } from "./BaseTask";
type Props = {