From 95dddeb0b542b2771ecef7c3fc6c9a3fc4f0882c Mon Sep 17 00:00:00 2001 From: Haim Kastnet <haim.kastner@gmail.com> Date: Thu, 4 Apr 2019 01:03:49 +0300 Subject: [PATCH] Add activity-log comment. #41 --- src/controllers/user-statuses-controller.ts | 7 +++--- src/core/symbols.ts | 5 ++++ src/data/report.ts | 3 ++- src/data/user-statuses.ts | 6 +++-- .../1554323679399-add-activity-comment.ts | 23 +++++++++++++++++++ src/models/activity-log.model.ts | 3 +++ 6 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 src/migrations/1554323679399-add-activity-comment.ts diff --git a/src/controllers/user-statuses-controller.ts b/src/controllers/user-statuses-controller.ts index 2b20298..01b81a9 100644 --- a/src/controllers/user-statuses-controller.ts +++ b/src/controllers/user-statuses-controller.ts @@ -21,7 +21,7 @@ import { getSpecificUserStatuses, updateUserStatus } from '../data'; -import { Platform, UserStatusMap, Cache, Status } from '../core'; +import { Platform, UserStatusMap, Cache, SetUserStatus } from '../core'; import { UserStatus, Pagination } from '../models'; const usersCache = new Cache( @@ -128,9 +128,10 @@ export class UserStatusesController extends Controller { @Put('statuses/{id}') public async updateUser( id: number, - @Body() { status }: { status: Status }, + @Body() setUserStatus: SetUserStatus, @Request() request: express.Request ): Promise<UserStatus> { - return await updateUserStatus(id, status, request.user); + const { status, comment } = setUserStatus; + return await updateUserStatus(id, status, request.user, comment); } } diff --git a/src/core/symbols.ts b/src/core/symbols.ts index 64078f7..f20b4a9 100644 --- a/src/core/symbols.ts +++ b/src/core/symbols.ts @@ -41,3 +41,8 @@ export interface SignedInfo { adminId: number; scope: Scope; } + +export interface SetUserStatus { + status: Status; + comment?: string; +} diff --git a/src/data/report.ts b/src/data/report.ts index c0e25fb..d3eb5fd 100644 --- a/src/data/report.ts +++ b/src/data/report.ts @@ -54,6 +54,7 @@ export const createNewReport = async (report: UserStatus, reporterKey: string) = await saveActivity({ userStatusId: userStatus.id, - newStatus: status + newStatus: status, + comment: userStatus.description }); }; diff --git a/src/data/user-statuses.ts b/src/data/user-statuses.ts index 9d68b88..1910fd8 100644 --- a/src/data/user-statuses.ts +++ b/src/data/user-statuses.ts @@ -104,7 +104,8 @@ export const getSpecificUserStatuses = async ( export const updateUserStatus = async ( id: number, status: Status, - adminId: number + adminId: number, + comment: string ): Promise<UserStatus> => { const botRepository = getConnection().getRepository(UserStatus); const userStatus = await botRepository.findOne(id); @@ -114,7 +115,8 @@ export const updateUserStatus = async ( userStatusId: userStatus.id, oldStatus: userStatus.status, newStatus: status, - adminId + adminId, + comment }); return userStatus; diff --git a/src/migrations/1554323679399-add-activity-comment.ts b/src/migrations/1554323679399-add-activity-comment.ts new file mode 100644 index 0000000..a05fac3 --- /dev/null +++ b/src/migrations/1554323679399-add-activity-comment.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner, Table, TableColumn } from 'typeorm'; + +export class AddActivityComment1554323679399 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise<any> { + await this._createColumns(queryRunner); + } + + public async down(queryRunner: QueryRunner): Promise<any> { + await queryRunner.dropColumn('activity_log', 'comment'); + } + + private async _createColumns(queryRunner: QueryRunner) { + await queryRunner.addColumn( + 'activity_log', + new TableColumn({ + name: 'comment', + type: 'varchar', + length: '255', + isNullable: true + }) + ); + } +} diff --git a/src/models/activity-log.model.ts b/src/models/activity-log.model.ts index ec17280..44a445e 100644 --- a/src/models/activity-log.model.ts +++ b/src/models/activity-log.model.ts @@ -38,6 +38,9 @@ export class ActivityLog { @CreateDateColumn({ name: 'created_at', nullable: false }) public createdAt: Date; + @Column({ type: 'varchar', length: 255, nullable: true }) + public comment?: string; + constructor(private activityLog?: Partial<ActivityLog>) { if (activityLog) { Object.assign(this, activityLog);