feat: implement activity logging for user actions and create activities table
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 44s
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 44s
This commit is contained in:
parent
6c75efbc28
commit
7e2f320b4f
12 changed files with 420 additions and 160 deletions
|
|
@ -5,7 +5,10 @@ import {
|
|||
belongsTo,
|
||||
hasMany,
|
||||
computed,
|
||||
hasOne
|
||||
hasOne,
|
||||
afterCreate,
|
||||
beforeUpdate,
|
||||
afterUpdate,
|
||||
} from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
|
|
@ -23,10 +26,11 @@ import DatasetIdentifier from './dataset_identifier.js';
|
|||
import Project from './project.js';
|
||||
import DocumentXmlCache from './DocumentXmlCache.js';
|
||||
import DatasetExtension from '#models/traits/dataset_extension';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
import type { HasMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { HasOne } from "@adonisjs/lucid/types/relations";
|
||||
import type { ManyToMany } from '@adonisjs/lucid/types/relations';
|
||||
import type { BelongsTo } from '@adonisjs/lucid/types/relations';
|
||||
import type { HasMany } from '@adonisjs/lucid/types/relations';
|
||||
import type { HasOne } from '@adonisjs/lucid/types/relations';
|
||||
import ActivityLogger from '#services/activity_logger';
|
||||
|
||||
export default class Dataset extends DatasetExtension {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
@ -46,7 +50,7 @@ export default class Dataset extends DatasetExtension {
|
|||
@column({ columnName: 'creating_corporation' })
|
||||
public creating_corporation: string;
|
||||
|
||||
@column.dateTime({
|
||||
@column.dateTime({
|
||||
columnName: 'embargo_date',
|
||||
serialize: (value: Date | null) => {
|
||||
return value ? dayjs(value).format('YYYY-MM-DD') : value;
|
||||
|
|
@ -60,7 +64,7 @@ export default class Dataset extends DatasetExtension {
|
|||
@column({})
|
||||
public language: string;
|
||||
|
||||
@column({columnName: 'publish_id'})
|
||||
@column({ columnName: 'publish_id' })
|
||||
public publish_id: number | null = null;
|
||||
|
||||
@column({})
|
||||
|
|
@ -266,10 +270,12 @@ export default class Dataset extends DatasetExtension {
|
|||
return model || null;
|
||||
}
|
||||
|
||||
static async getMax (column: string) {
|
||||
let dataset = await this.query().max(column + ' as max_publish_id').firstOrFail();
|
||||
static async getMax(column: string) {
|
||||
let dataset = await this.query()
|
||||
.max(column + ' as max_publish_id')
|
||||
.firstOrFail();
|
||||
return dataset.$extras.max_publish_id;
|
||||
}
|
||||
}
|
||||
|
||||
@computed({
|
||||
serializeAs: 'remaining_time',
|
||||
|
|
@ -284,4 +290,34 @@ export default class Dataset extends DatasetExtension {
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// @afterCreate()
|
||||
// static async logUploaded(dataset: Dataset) {
|
||||
// await dataset.preload('titles');
|
||||
|
||||
// await ActivityLogger.log({
|
||||
// type: 'dataset.uploaded',
|
||||
// description: `New publication uploaded: ${dataset.mainTitle ?? 'Untitled'}`,
|
||||
// subjectType: 'Dataset',
|
||||
// subjectId: dataset.id,
|
||||
// });
|
||||
// }
|
||||
|
||||
@beforeUpdate()
|
||||
static capturePublish(dataset: Dataset) {
|
||||
// $dirty is populated here, before persistence
|
||||
(dataset as any).$becamePublished = dataset.$dirty.status !== undefined && dataset.status === 'published';
|
||||
}
|
||||
|
||||
@afterUpdate()
|
||||
static async logPublished(dataset: Dataset) {
|
||||
if ((dataset as any).$becamePublished) {
|
||||
await ActivityLogger.log({
|
||||
type: 'dataset.published',
|
||||
description: `Publication published: ${dataset.mainTitle}`,
|
||||
subjectType: 'Dataset',
|
||||
subjectId: dataset.id,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue