Skip to content

Commit

Permalink
create orser status mapper
Browse files Browse the repository at this point in the history
  • Loading branch information
olasunkanmi-SE committed Nov 12, 2023
1 parent b6fb0db commit 5621a88
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import { Prop } from '@nestjs/mongoose';
import mongoose from 'mongoose';
import { OrderDataModel } from './order.schema';
import { Type } from 'class-transformer';
import { Document } from 'mongoose';

export type OrderStatusDocument = OrderStatusModel & Document;
export class OrderStatusModel extends BaseDocument implements IOrderStatusModel {
@Prop({ type: Boolean, required: true, default: true })
isActive: boolean;
Expand Down
50 changes: 50 additions & 0 deletions backend/src/order_statuses/order_status.mapper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { Injectable } from '@nestjs/common';
import { IMapper } from 'src/domain';
import { OrderStatus } from './order_status';
import { OrderStatusModel } from 'src/infrastructure/data_access/repositories/schemas/order-status.schema';
import { AuditMapper } from 'src/audit';

@Injectable()
export class orderStatusMapper implements IMapper<OrderStatus, OrderStatusModel> {
constructor(private readonly auditMapper: AuditMapper) {}
toPersistence(entity: OrderStatus): OrderStatusModel {
const { id, isActive, name, code, description, audit } = entity;
const {
auditCreatedBy,
auditCreatedDateTime,
auditModifiedBy,
auditModifiedDateTime,
auditDeletedBy,
auditDeletedDateTime,
} = audit;
const orderStatusDocument: OrderStatusModel = {
_id: id,
name,
isActive,
code,
description,
auditCreatedBy,
auditCreatedDateTime,
auditModifiedBy,
auditModifiedDateTime,
auditDeletedDateTime,
auditDeletedBy,
};
return orderStatusDocument;
}

toDomain(model: OrderStatusModel): OrderStatus {
const { _id, isActive, name, code, description } = model;
const entity: OrderStatus = OrderStatus.create(
{
name,
code,
description,
isActive,
audit: this.auditMapper.toDomain(model),
},
_id,
);
return entity;
}
}
12 changes: 11 additions & 1 deletion backend/src/order_statuses/order_status.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, Result } from 'src/domain';
import { Audit, Entity, Result } from 'src/domain';
import { IOrderStatuses } from './order_status_entity.interface';
import { Types } from 'mongoose';

Expand All @@ -7,12 +7,14 @@ export class OrderStatus extends Entity<IOrderStatuses> implements IOrderStatuse
_name: string;
_code: string;
_description?: string;
_audit: Audit;
constructor(id: Types.ObjectId, props: IOrderStatuses) {
super(id);
this._isActive = props.isActive;
this._name = props.name;
this._code = props.code;
this._description = props.description;
this._audit = props.audit;
}

get isActive(): boolean {
Expand Down Expand Up @@ -47,6 +49,14 @@ export class OrderStatus extends Entity<IOrderStatuses> implements IOrderStatuse
this._description = description;
}

get audit(): Audit {
return this._audit;
}

set audit(audit: Audit) {
this._audit = audit;
}

static create(props: IOrderStatuses, id?: Types.ObjectId) {
return Result.ok(new OrderStatus(id, props)).getValue();
}
Expand Down
3 changes: 3 additions & 0 deletions backend/src/order_statuses/order_status_entity.interface.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { Audit } from 'src/domain';

export interface IOrderStatuses {
isActive: boolean;
name: string;
code: string;
description?: string;
audit: Audit;
}

0 comments on commit 5621a88

Please sign in to comment.