added more fields to a bazaar project
Signed-off-by: Lykke Axlin <lykkeaxlin@hotmail.com> Co-authored-by: klaraab <klarabroman@live.se>
This commit is contained in:
@@ -18,14 +18,17 @@ import { DatabaseHandler } from './DatabaseHandler';
|
||||
import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils';
|
||||
|
||||
const bazaarProject: any = {
|
||||
name: 'name',
|
||||
entityRef: 'ref',
|
||||
name: 'n1',
|
||||
entityRef: 'ref1',
|
||||
community: '',
|
||||
status: 'proposed',
|
||||
announcement: 'a',
|
||||
membersCount: 0,
|
||||
startDate: '2021-11-07T13:27:00.000Z',
|
||||
endDate: null,
|
||||
size: 'small',
|
||||
responsible: 'r',
|
||||
};
|
||||
|
||||
describe('DatabaseHandler', () => {
|
||||
const databases = TestDatabases.create({
|
||||
ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'],
|
||||
@@ -33,18 +36,40 @@ describe('DatabaseHandler', () => {
|
||||
|
||||
async function createDatabaseHandler(databaseId: TestDatabaseId) {
|
||||
const knex = await databases.init(databaseId);
|
||||
return await DatabaseHandler.create({ database: knex });
|
||||
return {
|
||||
knex,
|
||||
dbHandler: await DatabaseHandler.create({ database: knex }),
|
||||
};
|
||||
}
|
||||
|
||||
it.each(databases.eachSupportedId())(
|
||||
'should do a full sync with the locations on connect, %p',
|
||||
'should insert and get entity, %p',
|
||||
async databaseId => {
|
||||
const db = await createDatabaseHandler(databaseId);
|
||||
await db.insertMetadata(bazaarProject);
|
||||
const { knex, dbHandler } = await createDatabaseHandler(databaseId);
|
||||
|
||||
const entities = await db.getEntities();
|
||||
expect(entities.length).toEqual(1);
|
||||
expect(entities[0].entity_ref).toEqual(bazaarProject.entityRef);
|
||||
await knex('metadata').insert({
|
||||
entity_ref: bazaarProject.entityRef,
|
||||
name: bazaarProject.name,
|
||||
announcement: bazaarProject.announcement,
|
||||
community: bazaarProject.community,
|
||||
status: bazaarProject.status,
|
||||
updated_at: new Date().toISOString(),
|
||||
start_date: bazaarProject.startDate,
|
||||
end_date: bazaarProject.endDate,
|
||||
size: bazaarProject.size,
|
||||
responsible: bazaarProject.responsible,
|
||||
});
|
||||
|
||||
const res = await dbHandler.getMetadata('ref1');
|
||||
|
||||
expect(res).toHaveLength(1);
|
||||
expect(res[0].announcement).toEqual('a');
|
||||
expect(res[0].community).toEqual('');
|
||||
expect(res[0].status).toEqual('proposed');
|
||||
expect(res[0].start_date).toEqual('2021-11-07T13:27:00.000Z');
|
||||
expect(res[0].end_date).toEqual(null);
|
||||
expect(res[0].size).toEqual('small');
|
||||
expect(res[0].responsible).toEqual('r');
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
|
||||
@@ -43,6 +43,20 @@ export class DatabaseHandler {
|
||||
this.database = options.database;
|
||||
}
|
||||
|
||||
private columns = [
|
||||
'members.entity_ref',
|
||||
'metadata.entity_ref',
|
||||
'metadata.name',
|
||||
'metadata.announcement',
|
||||
'metadata.status',
|
||||
'metadata.updated_at',
|
||||
'metadata.community',
|
||||
'metadata.size',
|
||||
'metadata.start_date',
|
||||
'metadata.end_date',
|
||||
'metadata.responsible',
|
||||
];
|
||||
|
||||
async getMembers(entityRef: string) {
|
||||
return await this.database
|
||||
.select('*')
|
||||
@@ -72,25 +86,25 @@ export class DatabaseHandler {
|
||||
'coalesce(count(members.entity_ref), 0) as members_count',
|
||||
);
|
||||
|
||||
const columns = [
|
||||
'members.entity_ref',
|
||||
'metadata.entity_ref',
|
||||
'metadata.name',
|
||||
'metadata.announcement',
|
||||
'metadata.status',
|
||||
'metadata.updated_at',
|
||||
'metadata.community',
|
||||
];
|
||||
|
||||
return await this.database('metadata')
|
||||
.select([...columns, coalesce])
|
||||
.select([...this.columns, coalesce])
|
||||
.where({ 'metadata.entity_ref': entityRef })
|
||||
.groupBy(columns)
|
||||
.groupBy(this.columns)
|
||||
.leftJoin('members', 'metadata.entity_ref', '=', 'members.entity_ref');
|
||||
}
|
||||
|
||||
async insertMetadata(bazaarProject: any) {
|
||||
const { name, entityRef, community, announcement, status } = bazaarProject;
|
||||
const {
|
||||
name,
|
||||
entityRef,
|
||||
community,
|
||||
announcement,
|
||||
status,
|
||||
size,
|
||||
startDate,
|
||||
endDate,
|
||||
responsible,
|
||||
} = bazaarProject;
|
||||
|
||||
await this.database
|
||||
.insert({
|
||||
@@ -100,12 +114,25 @@ export class DatabaseHandler {
|
||||
announcement: announcement,
|
||||
status: status,
|
||||
updated_at: new Date().toISOString(),
|
||||
size,
|
||||
start_date: startDate,
|
||||
end_date: endDate,
|
||||
responsible,
|
||||
})
|
||||
.into('metadata');
|
||||
}
|
||||
|
||||
async updateMetadata(bazaarProject: any) {
|
||||
const { entityRef, community, announcement, status } = bazaarProject;
|
||||
const {
|
||||
entityRef,
|
||||
community,
|
||||
announcement,
|
||||
status,
|
||||
size,
|
||||
startDate,
|
||||
endDate,
|
||||
responsible,
|
||||
} = bazaarProject;
|
||||
|
||||
return await this.database('metadata')
|
||||
.where({ entity_ref: entityRef })
|
||||
@@ -114,6 +141,10 @@ export class DatabaseHandler {
|
||||
community: community,
|
||||
status: status,
|
||||
updated_at: new Date().toISOString(),
|
||||
size,
|
||||
start_date: startDate,
|
||||
end_date: endDate,
|
||||
responsible,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,18 +159,9 @@ export class DatabaseHandler {
|
||||
'coalesce(count(members.entity_ref), 0) as members_count',
|
||||
);
|
||||
|
||||
const columns = [
|
||||
'members.entity_ref',
|
||||
'metadata.entity_ref',
|
||||
'metadata.name',
|
||||
'metadata.announcement',
|
||||
'metadata.status',
|
||||
'metadata.updated_at',
|
||||
'metadata.community',
|
||||
];
|
||||
return await this.database('metadata')
|
||||
.select([...columns, coalesce])
|
||||
.groupBy(columns)
|
||||
.select([...this.columns, coalesce])
|
||||
.groupBy(this.columns)
|
||||
.leftJoin('members', 'metadata.entity_ref', '=', 'members.entity_ref');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user