From 43d3f143227b35fd74d9d6d4d5d4cf56c8010ffc Mon Sep 17 00:00:00 2001 From: David Mehren Date: Sun, 17 Apr 2022 21:22:51 +0200 Subject: [PATCH] Use new APIs in seed.ts Signed-off-by: David Mehren --- src/seed.ts | 147 ++++++++++++++++++++++++++-------------------------- 1 file changed, 74 insertions(+), 73 deletions(-) diff --git a/src/seed.ts b/src/seed.ts index d601c378f..acb9a7ae7 100644 --- a/src/seed.ts +++ b/src/seed.ts @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: AGPL-3.0-only */ -import { createConnection } from 'typeorm'; +import { DataSource } from 'typeorm'; import { AuthToken } from './auth/auth-token.entity'; import { Author } from './authors/author.entity'; @@ -26,7 +26,7 @@ import { hashPassword } from './utils/password'; /** * This function creates and populates a sqlite db for manual testing */ -createConnection({ +const dataSource = new DataSource({ type: 'sqlite', database: './hedgedoc.sqlite', entities: [ @@ -49,80 +49,81 @@ createConnection({ synchronize: true, logging: false, dropSchema: true, -}) - .then(async (connection) => { - const password = 'test_password'; - const users = []; - users.push(User.create('hardcoded', 'Test User 1')); - users.push(User.create('hardcoded_2', 'Test User 2')); - users.push(User.create('hardcoded_3', 'Test User 3')); - const notes: Note[] = []; - notes.push(Note.create(null, 'test') as Note); - notes.push(Note.create(null, 'test2') as Note); - notes.push(Note.create(null, 'test3') as Note); +}); - for (let i = 0; i < 3; i++) { - const author = connection.manager.create(Author, Author.create(1)); - const user = connection.manager.create(User, users[i]); - const identity = Identity.create(user, ProviderType.LOCAL, false); - identity.passwordHash = await hashPassword(password); - connection.manager.create(Identity, identity); - author.user = Promise.resolve(user); - const revision = Revision.create( - 'This is a test note', - 'This is a test note', - notes[i], - ) as Revision; - const edit = Edit.create(author, 1, 42) as Edit; - revision.edits = Promise.resolve([edit]); - notes[i].revisions = Promise.all([revision]); - notes[i].userPermissions = Promise.resolve([]); - notes[i].groupPermissions = Promise.resolve([]); - user.ownedNotes = Promise.resolve([notes[i]]); - await connection.manager.save([ - notes[i], - user, - revision, - edit, - author, - identity, - ]); - } - const foundUsers = await connection.manager.find(User); - if (!foundUsers) { - throw new Error('Could not find freshly seeded users. Aborting.'); - } - const foundNotes = await connection.manager.find(Note, { - relations: ['aliases'], - }); - if (!foundNotes) { - throw new Error('Could not find freshly seeded notes. Aborting.'); - } - for (const note of foundNotes) { - if (!(await note.aliases)[0]) { - throw new Error( - 'Could not find alias of freshly seeded notes. Aborting.', - ); - } - } - for (const user of foundUsers) { - console.log( - `Created User '${user.username}' with password '${password}'`, +dataSource.initialize().then(async () => { + const password = 'test_password'; + const users = []; + users.push(User.create('hardcoded', 'Test User 1')); + users.push(User.create('hardcoded_2', 'Test User 2')); + users.push(User.create('hardcoded_3', 'Test User 3')); + const notes: Note[] = []; + notes.push(Note.create(null, 'test') as Note); + notes.push(Note.create(null, 'test2') as Note); + notes.push(Note.create(null, 'test3') as Note); + + for (let i = 0; i < 3; i++) { + const author = await dataSource.manager.save(dataSource.manager.create(Author, Author.create(1))) as Author; + const user = await dataSource.manager.save(dataSource.manager.create(User, users[i])) as User; + const identity = Identity.create(user, ProviderType.LOCAL, false); + identity.passwordHash = await hashPassword(password); + dataSource.manager.create(Identity, identity); + author.user = (dataSource.manager.save(user) as Promise); + const revision = Revision.create( + 'This is a test note', + 'This is a test note', + notes[i], + ) as Revision; + const edit = Edit.create(author, 1, 42) as Edit; + revision.edits = Promise.resolve([edit]); + notes[i].revisions = Promise.all([revision]); + notes[i].userPermissions = Promise.resolve([]); + notes[i].groupPermissions = Promise.resolve([]); + user.ownedNotes = Promise.resolve([notes[i]]); + await dataSource.manager.save([ + notes[i], + user, + revision, + edit, + author, + identity, + ]); + } + const foundUsers = await dataSource.manager.find(User); + if (!foundUsers) { + throw new Error('Could not find freshly seeded users. Aborting.'); + } + const foundNotes = await dataSource.manager.find(Note, { + relations: ['aliases'], + }); + if (!foundNotes) { + throw new Error('Could not find freshly seeded notes. Aborting.'); + } + for (const note of foundNotes) { + if (!(await note.aliases)[0]) { + throw new Error( + 'Could not find alias of freshly seeded notes. Aborting.', ); } + } + for (const user of foundUsers) { + console.log( + `Created User '${user.username}' with password '${password}'`, + ); + } + for (const note of foundNotes) { + console.log(`Created Note '${(await note.aliases)[0].name ?? ''}'`); + } + for (const user of foundUsers) { for (const note of foundNotes) { - console.log(`Created Note '${(await note.aliases)[0].name ?? ''}'`); + const historyEntry = HistoryEntry.create(user, note); + await dataSource.manager.save(historyEntry); + console.log( + `Created HistoryEntry for user '${user.username}' and note '${ + (await note.aliases)[0].name ?? '' + }'`, + ); } - for (const user of foundUsers) { - for (const note of foundNotes) { - const historyEntry = HistoryEntry.create(user, note); - await connection.manager.save(historyEntry); - console.log( - `Created HistoryEntry for user '${user.username}' and note '${ - (await note.aliases)[0].name ?? '' - }'`, - ); - } - } - }) + } +}) .catch((error) => console.log(error));