mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-19 08:31:43 +03:00
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
|
import {BookshelfRepository, ModelClass, ModelInstance} from '@tryghost/bookshelf-repository';
|
||
|
import logger from '@tryghost/logging';
|
||
|
import {SubscribeEvent} from './SubscribeEvent';
|
||
|
|
||
|
type Sentry = {
|
||
|
captureException(err: unknown): void;
|
||
|
}
|
||
|
|
||
|
export class BookshelfSubscribeEventRepository extends BookshelfRepository<string, SubscribeEvent> {
|
||
|
sentry?: Sentry;
|
||
|
|
||
|
constructor(Model: ModelClass<string>, deps: {sentry?: Sentry} = {}) {
|
||
|
super(Model);
|
||
|
this.sentry = deps.sentry;
|
||
|
}
|
||
|
|
||
|
toPrimitive(entity: SubscribeEvent): object {
|
||
|
return {
|
||
|
id: entity.id,
|
||
|
recommendation_id: entity.recommendationId,
|
||
|
member_id: entity.memberId,
|
||
|
created_at: entity.createdAt
|
||
|
};
|
||
|
}
|
||
|
|
||
|
modelToEntity(model: ModelInstance<string>): SubscribeEvent | null {
|
||
|
try {
|
||
|
return SubscribeEvent.create({
|
||
|
id: model.id,
|
||
|
recommendationId: model.get('recommendation_id') as string,
|
||
|
memberId: model.get('member_id') as string,
|
||
|
createdAt: model.get('created_at') as Date
|
||
|
});
|
||
|
} catch (err) {
|
||
|
logger.error(err);
|
||
|
this.sentry?.captureException(err);
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getFieldToColumnMap() {
|
||
|
return {
|
||
|
id: 'id',
|
||
|
recommendationId: 'recommendation_id',
|
||
|
memberId: 'member_id',
|
||
|
createdAt: 'created_at'
|
||
|
} as Record<keyof SubscribeEvent, string>;
|
||
|
}
|
||
|
}
|