86 lines
2.8 KiB
TypeScript
86 lines
2.8 KiB
TypeScript
import { AppDataSource } from 'src/datasource';
|
|
import * as fs from 'fs/promises';
|
|
import { join } from 'path';
|
|
import { User } from 'src/modules/objects/user/user.entity';
|
|
import { OAuth2Client } from 'src/modules/objects/oauth2-client/oauth2-client.entity';
|
|
import { UserToken } from 'src/modules/objects/user-token/user-token.entity';
|
|
import { AuditLog } from 'src/modules/objects/audit/audit.entity';
|
|
import { Upload } from 'src/modules/objects/upload/upload.entity';
|
|
import { OAuth2ClientURL } from 'src/modules/objects/oauth2-client/oauth2-client-url.entity';
|
|
|
|
async function run() {
|
|
await AppDataSource.initialize();
|
|
const dumpFile = await fs.readFile(join(__dirname, 'output.json'), {
|
|
encoding: 'utf-8',
|
|
});
|
|
const dump = JSON.parse(dumpFile);
|
|
|
|
const userRepo = AppDataSource.getRepository(User);
|
|
const uploadRepo = AppDataSource.getRepository(Upload);
|
|
const oauth2Repo = AppDataSource.getRepository(OAuth2Client);
|
|
const oauth2URLRepo = AppDataSource.getRepository(OAuth2ClientURL);
|
|
const tokenRepo = AppDataSource.getRepository(UserToken);
|
|
const auditRepo = AppDataSource.getRepository(AuditLog);
|
|
|
|
const users: User[] = [];
|
|
|
|
console.log('Saving users...');
|
|
for (const user of dump.users) {
|
|
const newUser = new User();
|
|
Object.assign(newUser, user);
|
|
await userRepo.save(newUser);
|
|
users.push(newUser);
|
|
}
|
|
|
|
console.log('Saving user uploads...');
|
|
for (const user of dump.users.filter(({ picture }) => picture)) {
|
|
const belonging = users.find(({ id }) => id === user.id);
|
|
const newUpload = new Upload();
|
|
|
|
Object.assign(newUpload, user.picture);
|
|
newUpload.uploader = belonging;
|
|
await uploadRepo.save(newUpload);
|
|
|
|
belonging.picture = newUpload;
|
|
await userRepo.save(belonging);
|
|
}
|
|
|
|
console.log('Saving OAuth2 clients...');
|
|
for (const client of dump.clients) {
|
|
const owner = users.find(({ id }) => id === client.ownerId);
|
|
const newClient = new OAuth2Client();
|
|
Object.assign(newClient, client);
|
|
newClient.owner = owner;
|
|
await oauth2Repo.save(newClient);
|
|
|
|
for (const url of client.urls || []) {
|
|
const newURL = new OAuth2ClientURL();
|
|
Object.assign(newURL, url);
|
|
newURL.client = newClient;
|
|
await oauth2URLRepo.save(newURL);
|
|
}
|
|
}
|
|
|
|
console.log('Saving tokens...');
|
|
for (const token of dump.totp) {
|
|
const owner = users.find(({ id }) => id === token.userId);
|
|
const newTOTP = new UserToken();
|
|
Object.assign(newTOTP, token);
|
|
newTOTP.user = owner;
|
|
await tokenRepo.save(newTOTP);
|
|
}
|
|
|
|
console.log('Saving audit logs...');
|
|
for (const audit of dump.auditLogs) {
|
|
const owner = users.find(({ id }) => id === audit.actorId);
|
|
const newAudit = new AuditLog();
|
|
Object.assign(newAudit, audit);
|
|
newAudit.actor = owner;
|
|
await auditRepo.save(newAudit);
|
|
}
|
|
}
|
|
|
|
run()
|
|
.catch(console.error)
|
|
.then(() => process.exit(0));
|