mirror of
https://github.com/hexastack/hexabot
synced 2025-06-26 18:27:28 +00:00
fix: migration
This commit is contained in:
parent
356b16aa9d
commit
b74c4a4e3a
@ -259,7 +259,7 @@ module.exports = {
|
|||||||
attachmentService: this.attachmentService,
|
attachmentService: this.attachmentService,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result && migrationDocument) {
|
if (result) {
|
||||||
await this.successCallback({
|
await this.successCallback({
|
||||||
version,
|
version,
|
||||||
action,
|
action,
|
||||||
|
@ -208,70 +208,75 @@ const populateSubscriberAvatars = async ({ logger }: MigrationServices) => {
|
|||||||
const cursor = SubscriberModel.find().cursor();
|
const cursor = SubscriberModel.find().cursor();
|
||||||
|
|
||||||
for await (const subscriber of cursor) {
|
for await (const subscriber of cursor) {
|
||||||
const foreignId = subscriber.foreign_id;
|
try {
|
||||||
if (!foreignId) {
|
const foreignId = subscriber.foreign_id;
|
||||||
logger.debug(`No foreign id found for subscriber ${subscriber._id}`);
|
if (!foreignId) {
|
||||||
continue;
|
logger.debug(`No foreign id found for subscriber ${subscriber._id}`);
|
||||||
}
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
const attachment = await AttachmentModel.findOne({
|
const attachment = await AttachmentModel.findOne({
|
||||||
name: RegExp(`^${foreignId}.jpe?g$`),
|
name: RegExp(`^${foreignId}.jpe?g$`),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (attachment) {
|
if (attachment) {
|
||||||
await SubscriberModel.updateOne(
|
await SubscriberModel.updateOne(
|
||||||
{ _id: subscriber._id },
|
{ _id: subscriber._id },
|
||||||
{
|
{
|
||||||
$set: {
|
$set: {
|
||||||
avatar: attachment._id,
|
avatar: attachment._id,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
);
|
||||||
);
|
logger.log(
|
||||||
logger.log(
|
`Subscriber ${subscriber._id} avatar attribute successfully updated`,
|
||||||
`Subscriber ${subscriber._id} avatar attribute successfully updated`,
|
);
|
||||||
);
|
|
||||||
|
|
||||||
await AttachmentModel.updateOne(
|
await AttachmentModel.updateOne(
|
||||||
{ _id: attachment._id },
|
{ _id: attachment._id },
|
||||||
{
|
{
|
||||||
$set: {
|
$set: {
|
||||||
resourceRef: AttachmentResourceRef.SubscriberAvatar,
|
resourceRef: AttachmentResourceRef.SubscriberAvatar,
|
||||||
access: 'private',
|
access: 'private',
|
||||||
createdByRef: AttachmentCreatedByRef.Subscriber,
|
createdByRef: AttachmentCreatedByRef.Subscriber,
|
||||||
createdBy: subscriber._id,
|
createdBy: subscriber._id,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
);
|
||||||
);
|
|
||||||
|
|
||||||
logger.log(
|
logger.log(
|
||||||
`Subscriber ${subscriber._id} avatar attachment attributes successfully populated`,
|
`Subscriber ${subscriber._id} avatar attachment attributes successfully populated`,
|
||||||
);
|
);
|
||||||
|
|
||||||
const src = resolve(
|
const src = resolve(
|
||||||
join(config.parameters.uploadDir, attachment.location),
|
join(config.parameters.uploadDir, attachment.location),
|
||||||
);
|
);
|
||||||
if (existsSync(src)) {
|
if (existsSync(src)) {
|
||||||
try {
|
try {
|
||||||
const dst = resolve(
|
const dst = resolve(
|
||||||
join(config.parameters.avatarDir, attachment.location),
|
join(config.parameters.avatarDir, attachment.location),
|
||||||
|
);
|
||||||
|
await moveFile(src, dst);
|
||||||
|
logger.log(
|
||||||
|
`Subscriber ${subscriber._id} avatar file successfully moved to the new "avatars" folder`,
|
||||||
|
);
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(err);
|
||||||
|
logger.warn(`Unable to move subscriber ${subscriber._id} avatar!`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn(
|
||||||
|
`Subscriber ${subscriber._id} avatar attachment file was not found!`,
|
||||||
);
|
);
|
||||||
await moveFile(src, dst);
|
|
||||||
logger.log(
|
|
||||||
`Subscriber ${subscriber._id} avatar file successfully moved to the new "avatars" folder`,
|
|
||||||
);
|
|
||||||
} catch (err) {
|
|
||||||
logger.error(err);
|
|
||||||
logger.warn(`Unable to move subscriber ${subscriber._id} avatar!`);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`Subscriber ${subscriber._id} avatar attachment file was not found!`,
|
`No avatar attachment found for subscriber ${subscriber._id}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} catch (err) {
|
||||||
logger.warn(
|
logger.error(err);
|
||||||
`No avatar attachment found for subscriber ${subscriber._id}`,
|
logger.error(`Unable to populate subscriber avatar ${subscriber._id}`);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -295,50 +300,55 @@ const unpopulateSubscriberAvatar = async ({ logger }: MigrationServices) => {
|
|||||||
const cursor = SubscriberModel.find({ avatar: { $exists: true } }).cursor();
|
const cursor = SubscriberModel.find({ avatar: { $exists: true } }).cursor();
|
||||||
|
|
||||||
for await (const subscriber of cursor) {
|
for await (const subscriber of cursor) {
|
||||||
if (subscriber.avatar) {
|
try {
|
||||||
const attachment = await AttachmentModel.findOne({
|
if (subscriber.avatar) {
|
||||||
_id: subscriber.avatar,
|
const attachment = await AttachmentModel.findOne({
|
||||||
});
|
_id: subscriber.avatar,
|
||||||
|
});
|
||||||
|
|
||||||
if (attachment) {
|
if (attachment) {
|
||||||
// Move file to the old folder
|
// Move file to the old folder
|
||||||
const src = resolve(
|
const src = resolve(
|
||||||
join(config.parameters.avatarDir, attachment.location),
|
join(config.parameters.avatarDir, attachment.location),
|
||||||
);
|
);
|
||||||
if (existsSync(src)) {
|
if (existsSync(src)) {
|
||||||
try {
|
try {
|
||||||
const dst = resolve(
|
const dst = resolve(
|
||||||
join(config.parameters.uploadDir, attachment.location),
|
join(config.parameters.uploadDir, attachment.location),
|
||||||
);
|
);
|
||||||
await moveFile(src, dst);
|
await moveFile(src, dst);
|
||||||
logger.log(
|
logger.log(
|
||||||
`Avatar attachment successfully moved back to the old "avatars" folder`,
|
`Avatar attachment successfully moved back to the old "avatars" folder`,
|
||||||
);
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(err);
|
logger.error(err);
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`Unable to move back subscriber ${subscriber._id} avatar to the old folder!`,
|
`Unable to move back subscriber ${subscriber._id} avatar to the old folder!`,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn('Avatar attachment file was not found!');
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
logger.warn('Avatar attachment file was not found!');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset avatar to null
|
// Reset avatar to null
|
||||||
await SubscriberModel.updateOne(
|
await SubscriberModel.updateOne(
|
||||||
{ _id: subscriber._id },
|
{ _id: subscriber._id },
|
||||||
{
|
{
|
||||||
$set: { avatar: null },
|
$set: { avatar: null },
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
logger.log(
|
logger.log(
|
||||||
`Subscriber ${subscriber._id} avatar attribute successfully reverted to null`,
|
`Subscriber ${subscriber._id} avatar attribute successfully reverted to null`,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`No avatar attachment found for subscriber ${subscriber._id}`,
|
`No avatar attachment found for subscriber ${subscriber._id}`,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(err);
|
||||||
|
logger.error(`Unable to unpopulate subscriber ${subscriber._id} avatar`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -33,7 +33,7 @@ export interface MigrationRunOneParams extends MigrationRunParams {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface MigrationSuccessCallback extends MigrationRunParams {
|
export interface MigrationSuccessCallback extends MigrationRunParams {
|
||||||
migrationDocument: MigrationDocument;
|
migrationDocument: MigrationDocument | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type MigrationServices = {
|
export type MigrationServices = {
|
||||||
|
Loading…
Reference in New Issue
Block a user