Compare commits
13 Commits
v0.2.0
...
886c1092d6
| Author | SHA1 | Date | |
|---|---|---|---|
| 886c1092d6 | |||
| e12aedd1aa | |||
| 434aaf6136 | |||
| d8b6669d12 | |||
| 7bc603028d | |||
| c18012f65a | |||
| b15967ff31 | |||
| 2db6510a8a | |||
| 1837336865 | |||
| eab0e634a2 | |||
| 8870ebdb5e | |||
| 9df9d9ae80 | |||
| 67ba489fe2 |
@@ -6,4 +6,5 @@ DB_USER=bla
|
||||
DB_PASSWORD=bla
|
||||
DB_NAME=bla
|
||||
NODE_ENV=production
|
||||
POSTALCODE_COUNTRYCODE=DE
|
||||
POSTALCODE_COUNTRYCODE=DE
|
||||
SEED_TEST_DATA=false
|
||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -4,9 +4,7 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
|
||||
#### [v0.2.0](https://git.odit.services/lfk/backend/compare/v0.1.1...v0.2.0)
|
||||
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`8960aa5`](https://git.odit.services/lfk/backend/commit/8960aa5545ddeb57d4ef42c21c0ca6001dfeaea9)
|
||||
- 🚀Bumped version to v0.2.0 [`ddafd90`](https://git.odit.services/lfk/backend/commit/ddafd90d3e41fb9ee37172a8306c30d8483dfe2c)
|
||||
- Merge pull request 'Implemented group contacts feature/104-contacts' (#108) from feature/104-contacts into dev [`a0c2b5a`](https://git.odit.services/lfk/backend/commit/a0c2b5ade8d198ec16d33b39e47205e8b03a669f)
|
||||
- Merge pull request 'Alpha Release 0.2.0' (#109) from dev into main [`dd3d93e`](https://git.odit.services/lfk/backend/commit/dd3d93edc7db7ca7f133cb2d8f60c3eaf30bcbf0)
|
||||
- Updated contact update tests [`c3d008e`](https://git.odit.services/lfk/backend/commit/c3d008ec0ff92f80addbdb93ffc1fa2b3278a8a6)
|
||||
- Added contact delete tests [`dd7e5da`](https://git.odit.services/lfk/backend/commit/dd7e5dae368a8decd79357f658dda2164fa6f1e7)
|
||||
- Added contact add valid tests [`e165f01`](https://git.odit.services/lfk/backend/commit/e165f019307e7745357493eacf3e2fa31538122b)
|
||||
@@ -29,6 +27,7 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
- Implemented contact updateing [`28fb983`](https://git.odit.services/lfk/backend/commit/28fb9834e18bde012c5b51cc49a39585d20f7cc1)
|
||||
- Fixed key null constraint [`de82437`](https://git.odit.services/lfk/backend/commit/de824375d3a1da6ee4d78ea39b7da66fc05f2a02)
|
||||
- Implemented contact posting [`11af9c0`](https://git.odit.services/lfk/backend/commit/11af9c02d977dcd6919652256dbdb9fd5438cabd)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`8960aa5`](https://git.odit.services/lfk/backend/commit/8960aa5545ddeb57d4ef42c21c0ca6001dfeaea9)
|
||||
- Implemented contact group setting on creation [`3b06d1a`](https://git.odit.services/lfk/backend/commit/3b06d1a6ef3c95eb5bb7d485accddabba0a8e4f7)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`32e054e`](https://git.odit.services/lfk/backend/commit/32e054eb84c869210fd483583ae5a6d0e2249cf9)
|
||||
- Switched Address to embedded entity [`7fbe649`](https://git.odit.services/lfk/backend/commit/7fbe649dc90f4bb9f240c5a80fed447048e5e105)
|
||||
@@ -39,11 +38,14 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
- Fixed donor address check [`4824547`](https://git.odit.services/lfk/backend/commit/4824547dde4d7f90e9e2377a26df34cabf082fdb)
|
||||
- Updated contact delete tests [`8ae53f1`](https://git.odit.services/lfk/backend/commit/8ae53f1c4930e2fd72eb230a5314336f3a45a611)
|
||||
- Added address to contact response [`09e429f`](https://git.odit.services/lfk/backend/commit/09e429fc676c7dd370bba0495b072f81867bd250)
|
||||
- Updated comments [`a4e8311`](https://git.odit.services/lfk/backend/commit/a4e8311cbd22588ecb4dc2fdbe05397b07d336f8)
|
||||
- Updated the responseclasses to use the new address implementation [`dafac06`](https://git.odit.services/lfk/backend/commit/dafac06bc84d1b237096a561b3adcd3ca5cb1dd8)
|
||||
- Added address validity check [`ae7c5ff`](https://git.odit.services/lfk/backend/commit/ae7c5ff0c387e9337d01a9dd819a4dddc208f6dd)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`da9a359`](https://git.odit.services/lfk/backend/commit/da9a3592510eacd2d67a127dc61e954343e0444b)
|
||||
- 🚀Bumped version to v0.2.0 [`ddafd90`](https://git.odit.services/lfk/backend/commit/ddafd90d3e41fb9ee37172a8306c30d8483dfe2c)
|
||||
- Merge pull request 'Implemented group contacts feature/104-contacts' (#108) from feature/104-contacts into dev [`a0c2b5a`](https://git.odit.services/lfk/backend/commit/a0c2b5ade8d198ec16d33b39e47205e8b03a669f)
|
||||
- Updated comments [`a4e8311`](https://git.odit.services/lfk/backend/commit/a4e8311cbd22588ecb4dc2fdbe05397b07d336f8)
|
||||
- Removed (now useless) relations [`673dea2`](https://git.odit.services/lfk/backend/commit/673dea2e5754e99ff77f7556d4fc03d4cca28a94)
|
||||
- Added missing id property [`6b4b16c`](https://git.odit.services/lfk/backend/commit/6b4b16c13b0c2f55745ded3431cad2f4986be296)
|
||||
- Added address validity check [`ae7c5ff`](https://git.odit.services/lfk/backend/commit/ae7c5ff0c387e9337d01a9dd819a4dddc208f6dd)
|
||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`f53894b`](https://git.odit.services/lfk/backend/commit/f53894b16ac1c06ecbeeb0b63a56ac438b2fbe1b)
|
||||
- Updated comments [`8bc01d3`](https://git.odit.services/lfk/backend/commit/8bc01d3f2406ce8e58c2ab2963c858495c510dcf)
|
||||
- Fixed contact cascading [`179c2a5`](https://git.odit.services/lfk/backend/commit/179c2a5157fca036acf8d0e6a51821d377860bc1)
|
||||
|
||||
@@ -9,7 +9,8 @@ export const config = {
|
||||
jwt_secret: process.env.JWT_SECRET || "secretjwtsecret",
|
||||
phone_validation_countrycode: getPhoneCodeLocale(),
|
||||
postalcode_validation_countrycode: getPostalCodeLocale(),
|
||||
version: process.env.VERSION || require('../package.json').version
|
||||
version: process.env.VERSION || require('../package.json').version,
|
||||
seedTestData: getDataSeeding()
|
||||
}
|
||||
let errors = 0
|
||||
if (typeof config.internal_port !== "number") {
|
||||
@@ -30,4 +31,11 @@ function getPostalCodeLocale(): any {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function getDataSeeding(): Boolean {
|
||||
try {
|
||||
return JSON.parse(process.env.SEED_TEST_DATA);
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
export let e = errors
|
||||
@@ -1,6 +1,9 @@
|
||||
import { createConnection } from "typeorm";
|
||||
import { runSeeder } from 'typeorm-seeding';
|
||||
import { User } from '../models/entities/User';
|
||||
import { config } from '../config';
|
||||
import { ConfigFlag } from '../models/entities/ConfigFlags';
|
||||
import SeedPublicOrg from '../seeds/SeedPublicOrg';
|
||||
import SeedTestRunners from '../seeds/SeedTestRunners';
|
||||
import SeedUsers from '../seeds/SeedUsers';
|
||||
/**
|
||||
* Loader for the database that creates the database connection and initializes the database tabels.
|
||||
@@ -9,8 +12,20 @@ import SeedUsers from '../seeds/SeedUsers';
|
||||
export default async () => {
|
||||
const connection = await createConnection();
|
||||
await connection.synchronize();
|
||||
if (await connection.getRepository(User).count() === 0) {
|
||||
|
||||
//The data seeding part
|
||||
if (!(await connection.getRepository(ConfigFlag).findOne({ option: "seeded:user", value: "true" }))) {
|
||||
await runSeeder(SeedUsers);
|
||||
await connection.getRepository(ConfigFlag).save({ option: "seeded:user", value: "true" });
|
||||
}
|
||||
if (!(await connection.getRepository(ConfigFlag).findOne({ option: "seeded:citizenorg", value: "true" }))) {
|
||||
await runSeeder(SeedPublicOrg);
|
||||
await connection.getRepository(ConfigFlag).save({ option: "seeded:citizenorg", value: "true" });
|
||||
}
|
||||
if (!(await connection.getRepository(ConfigFlag).findOne({ option: "seeded:testdata", value: "true" })) && config.seedTestData == true) {
|
||||
await runSeeder(SeedTestRunners);
|
||||
await connection.getRepository(ConfigFlag).save({ option: "seeded:testdata", value: "true" });
|
||||
}
|
||||
|
||||
return connection;
|
||||
};
|
||||
27
src/models/entities/ConfigFlags.ts
Normal file
27
src/models/entities/ConfigFlags.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import {
|
||||
IsNotEmpty,
|
||||
IsString
|
||||
} from "class-validator";
|
||||
import { Column, Entity, PrimaryColumn } from "typeorm";
|
||||
|
||||
/**
|
||||
* Defines the ConfigFlag entity.
|
||||
* This entity can be used to set some flags on db init.
|
||||
*/
|
||||
@Entity()
|
||||
export class ConfigFlag {
|
||||
/**
|
||||
* The flag's name (primary).
|
||||
*/
|
||||
@PrimaryColumn()
|
||||
@IsString()
|
||||
option: string;
|
||||
|
||||
/**
|
||||
* The flag's value.
|
||||
*/
|
||||
@Column()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
value: string;
|
||||
}
|
||||
15
src/seeds/SeedPublicOrg.ts
Normal file
15
src/seeds/SeedPublicOrg.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Connection } from 'typeorm';
|
||||
import { Factory, Seeder } from 'typeorm-seeding';
|
||||
import { CreateRunnerOrganisation } from '../models/actions/create/CreateRunnerOrganisation';
|
||||
import { RunnerOrganisation } from '../models/entities/RunnerOrganisation';
|
||||
|
||||
/**
|
||||
* Seeds the public runner org (named: "Citizen" by default).
|
||||
*/
|
||||
export default class SeedPublicOrg implements Seeder {
|
||||
public async run(factory: Factory, connection: Connection): Promise<any> {
|
||||
let publicOrg = new CreateRunnerOrganisation();
|
||||
publicOrg.name = "Citizen";
|
||||
await connection.getRepository(RunnerOrganisation).save(await publicOrg.toEntity());
|
||||
}
|
||||
}
|
||||
93
src/seeds/SeedTestRunners.ts
Normal file
93
src/seeds/SeedTestRunners.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import { Connection } from 'typeorm';
|
||||
import { Factory, Seeder } from 'typeorm-seeding';
|
||||
import { CreateGroupContact } from '../models/actions/create/CreateGroupContact';
|
||||
import { CreateRunner } from '../models/actions/create/CreateRunner';
|
||||
import { CreateRunnerOrganisation } from '../models/actions/create/CreateRunnerOrganisation';
|
||||
import { CreateRunnerTeam } from '../models/actions/create/CreateRunnerTeam';
|
||||
import { Address } from '../models/entities/Address';
|
||||
import { GroupContact } from '../models/entities/GroupContact';
|
||||
import { Runner } from '../models/entities/Runner';
|
||||
import { RunnerGroup } from '../models/entities/RunnerGroup';
|
||||
import { RunnerOrganisation } from '../models/entities/RunnerOrganisation';
|
||||
import { RunnerTeam } from '../models/entities/RunnerTeam';
|
||||
|
||||
/**
|
||||
* Seeds a test runner org with a test runner team ans some test runners.
|
||||
* Usefull for testing or demo instances.
|
||||
*/
|
||||
export default class SeedTestRunners implements Seeder {
|
||||
public async run(factory: Factory, connection: Connection): Promise<any> {
|
||||
let testOrg: RunnerOrganisation = await this.createTestOrg(connection);
|
||||
let testTeam: RunnerTeam = await this.createTestTeam(connection, testOrg);
|
||||
await this.createTestContact(connection, testOrg);
|
||||
await this.createTestRunners(connection, testOrg);
|
||||
await this.createTestRunners(connection, testTeam);
|
||||
}
|
||||
|
||||
public async createTestOrg(connection: Connection): Promise<RunnerOrganisation> {
|
||||
let testOrg = new CreateRunnerOrganisation();
|
||||
testOrg.name = "Test Org";
|
||||
|
||||
testOrg.address = new Address();
|
||||
testOrg.address.address1 = "Test street 1";
|
||||
testOrg.address.city = "Herzogenaurach";
|
||||
testOrg.address.country = "Germany";
|
||||
testOrg.address.postalcode = "90174";
|
||||
|
||||
return await connection.getRepository(RunnerOrganisation).save(await testOrg.toEntity());
|
||||
}
|
||||
|
||||
public async createTestTeam(connection: Connection, org: RunnerOrganisation): Promise<RunnerTeam> {
|
||||
let testTeam = new CreateRunnerTeam();
|
||||
testTeam.name = "Test Team";
|
||||
testTeam.parentGroup = org.id;
|
||||
|
||||
return await connection.getRepository(RunnerTeam).save(await testTeam.toEntity());
|
||||
}
|
||||
|
||||
public async createTestRunners(connection: Connection, group: RunnerGroup) {
|
||||
for (let first of this.firstnames) {
|
||||
for (let last of this.lastnames) {
|
||||
let runner = new CreateRunner;
|
||||
runner.firstname = first;
|
||||
runner.lastname = last;
|
||||
runner.middlename = group.name;
|
||||
runner.group = group.id;
|
||||
await connection.getRepository(Runner).save(await runner.toEntity());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async createTestContact(connection: Connection, group: RunnerGroup) {
|
||||
let contact = new CreateGroupContact;
|
||||
contact.firstname = "Test";
|
||||
contact.lastname = "Contact";
|
||||
contact.email = "test.contact@dev.lauf-fuer-kaya.de";
|
||||
contact.groups = group.id;
|
||||
|
||||
contact.address = new Address();
|
||||
contact.address.address1 = "First Contact Street 100";
|
||||
contact.address.city = "Herzogenaurach";
|
||||
contact.address.country = "Germany";
|
||||
contact.address.postalcode = "90174";
|
||||
|
||||
await connection.getRepository(GroupContact).save(await contact.toEntity());
|
||||
}
|
||||
|
||||
private firstnames = [
|
||||
"Peter",
|
||||
"Matze",
|
||||
"Tine",
|
||||
"Uta",
|
||||
"Fabian",
|
||||
"Unicode:ÖÄ?✔⚠"
|
||||
]
|
||||
|
||||
private lastnames = [
|
||||
"Muster",
|
||||
"Example",
|
||||
"Müller",
|
||||
"Unicode:搆Ǩ>ÙՠƳ|"
|
||||
]
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user