@tomei/media 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.eslintrc.js +66 -66
  3. package/.husky/commit-msg +4 -4
  4. package/.husky/pre-commit +4 -4
  5. package/.prettierrc +4 -4
  6. package/.prettierrc copy +3 -3
  7. package/README.md +93 -93
  8. package/dist/base/base.medias.d.ts +2 -3
  9. package/dist/base/base.medias.js +9 -8
  10. package/dist/base/base.medias.js.map +1 -1
  11. package/dist/base/index.d.ts +2 -0
  12. package/dist/base/index.js +6 -0
  13. package/dist/base/index.js.map +1 -0
  14. package/dist/common/common.service.spec.d.ts +0 -0
  15. package/dist/common/common.service.spec.js +5 -0
  16. package/dist/common/common.service.spec.js.map +1 -0
  17. package/dist/database.d.ts +4 -0
  18. package/dist/database.js +16 -0
  19. package/dist/database.js.map +1 -0
  20. package/dist/dto/medias.dto.d.ts +12 -0
  21. package/dist/dto/medias.dto.js +88 -0
  22. package/dist/dto/medias.dto.js.map +1 -0
  23. package/dist/entities/index.d.ts +2 -0
  24. package/dist/entities/index.js +6 -0
  25. package/dist/entities/index.js.map +1 -0
  26. package/dist/entities/media.entity.d.ts +21 -0
  27. package/dist/entities/media.entity.js +152 -0
  28. package/dist/entities/media.entity.js.map +1 -0
  29. package/dist/index.d.ts +12 -11
  30. package/dist/index.js +3 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/interfaces/commonService.interface.d.ts +17 -0
  33. package/dist/interfaces/commonService.interface.js +3 -0
  34. package/dist/interfaces/commonService.interface.js.map +1 -0
  35. package/dist/interfaces/index.d.ts +3 -0
  36. package/dist/interfaces/index.js +3 -0
  37. package/dist/interfaces/index.js.map +1 -0
  38. package/dist/interfaces/media.repository.interface.d.ts +10 -0
  39. package/dist/interfaces/media.repository.interface.js +3 -0
  40. package/dist/interfaces/media.repository.interface.js.map +1 -0
  41. package/dist/interfaces/medias-attr.interface.d.ts +22 -0
  42. package/dist/interfaces/medias-attr.interface.js +3 -0
  43. package/dist/interfaces/medias-attr.interface.js.map +1 -0
  44. package/dist/medias.controller copy.d.ts +25 -0
  45. package/dist/medias.controller copy.js +225 -0
  46. package/dist/medias.controller copy.js.map +1 -0
  47. package/dist/medias.controller.d.ts +29 -0
  48. package/dist/medias.controller.js +120 -0
  49. package/dist/medias.controller.js.map +1 -0
  50. package/dist/medias.controller.old.d.ts +25 -0
  51. package/dist/medias.controller.old.js +225 -0
  52. package/dist/medias.controller.old.js.map +1 -0
  53. package/dist/medias.d.ts +3 -3
  54. package/dist/medias.js +4 -2
  55. package/dist/medias.js.map +1 -1
  56. package/dist/medias.module.d.ts +2 -0
  57. package/dist/medias.module.js +32 -0
  58. package/dist/medias.module.js.map +1 -0
  59. package/dist/medias.repository.d.ts +6 -14
  60. package/dist/medias.repository.js +46 -37
  61. package/dist/medias.repository.js.map +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/migration/0001-add-defaultyn-hiddenyn-to-media-table.js +36 -36
  64. package/migration/media-migration.js +82 -82
  65. package/package.json +75 -74
  66. package/src/base/base.medias.ts +33 -36
  67. package/src/common/common.module.ts +10 -10
  68. package/src/common/common.service.ts +107 -107
  69. package/src/common/dto/add-field-translation.dto.ts +23 -23
  70. package/src/common/dto/get-media.dto.ts +12 -12
  71. package/src/database.ts +16 -0
  72. package/src/entities/medias.entity.ts +125 -125
  73. package/src/index.ts +23 -22
  74. package/src/medias.repository.ts +43 -29
  75. package/src/medias.ts +4 -7
  76. package/src/pipe/validate-search.pipe.ts +44 -44
  77. package/tsconfig.build.json +4 -4
  78. package/tslint.json +18 -18
@@ -1,41 +1,55 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/sequelize';
3
- import { BaseRepository } from './base/base.repository.abstract';
4
1
  import { MediasModel } from './entities/medias.entity';
5
- import { IBaseMediasAttr } from './interfaces/base.medias-attr.interface';
6
- import { IMediasRepository } from './interfaces/medias.repository.interface';
7
2
 
8
- @Injectable()
3
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
4
+
9
5
  export class MediasRepository
10
- extends BaseRepository<MediasModel>
11
- implements IMediasRepository
6
+ extends RepositoryBase<MediasModel>
7
+ implements IRepositoryBase<MediasModel>
12
8
  {
13
- constructor(
14
- @InjectModel(MediasModel)
15
- private readonly mediasModel: typeof MediasModel,
16
- ) {
17
- super(mediasModel);
18
- }
19
-
20
- create(data: IBaseMediasAttr, options?: any): Promise<MediasModel> | any {
21
- return this.mediasModel.create({ ...data }, options);
22
- }
23
-
24
- findAll(options: any): Promise<MediasModel[]> {
25
- return this.mediasModel.findAll(options);
9
+ constructor() {
10
+ super(MediasModel);
26
11
  }
27
12
 
28
- findAllWithPagination(
29
- options: any,
30
- ): Promise<{ count: number; rows: MediasModel[] }> {
31
- return this.mediasModel.findAndCountAll(options);
13
+ async findByPk(MediaId: string, transaction: any): Promise<MediasModel> {
14
+ try {
15
+ const options = {
16
+ where: {
17
+ MediaId: MediaId,
18
+ },
19
+ transaction: transaction,
20
+ };
21
+ const result = await MediasModel.findOne(options);
22
+ return result;
23
+ } catch (error) {
24
+ throw new Error(`An Error occured when fetching : ${error.message}`);
25
+ }
32
26
  }
33
27
 
34
- findOne(options: any): Promise<MediasModel> {
35
- return this.mediasModel.findOne(options);
28
+ async delete(MediaId: string, dbTransaction?: any) {
29
+ try {
30
+ const options = {
31
+ where: {
32
+ MediaId,
33
+ },
34
+ transaction: dbTransaction,
35
+ };
36
+ await MediasModel.destroy(options);
37
+ } catch (error) {
38
+ throw new Error(`An Error occured when delete : ${error.message}`);
39
+ }
36
40
  }
37
41
 
38
- update(data: IBaseMediasAttr, options?: any): any {
39
- return this.mediasModel.update({ ...data }, options);
42
+ async findAndCountAll(options?: any) {
43
+ try {
44
+ let medias: any;
45
+ if (options) {
46
+ medias = await MediasModel.findAndCountAll(options);
47
+ } else {
48
+ medias = await MediasModel.findAndCountAll();
49
+ }
50
+ return medias;
51
+ } catch (error) {
52
+ throw new Error(`An Error occured when retriving : ${error.message}`);
53
+ }
40
54
  }
41
55
  }
package/src/medias.ts CHANGED
@@ -7,7 +7,6 @@ import * as util from 'util';
7
7
  import { BaseMedias } from './base/base.medias';
8
8
  import { MediasModel } from './entities/medias.entity';
9
9
  import { IBaseMediasAttr } from './interfaces/base.medias-attr.interface';
10
- import { IMediasRepository } from './interfaces/medias.repository.interface';
11
10
  import { Readable } from 'stream';
12
11
  import { InternalMediaDto } from './dto/internal-medias.dto';
13
12
  import { ExternalMediaDto } from './dto/external-media.dto';
@@ -19,6 +18,7 @@ import {
19
18
  ActivityHistoryDB,
20
19
  } from '@tomei/activity-history';
21
20
  import { LoginUser, SessionService } from '@tomei/sso';
21
+ import { MediasRepository } from './medias.repository';
22
22
 
23
23
  type MediaFile = {
24
24
  buffer: Buffer;
@@ -39,13 +39,10 @@ export class Medias extends BaseMedias {
39
39
  algorithm = 'aes-256-cbc';
40
40
  commonService: CommonService;
41
41
  entity = typeof MediasModel;
42
+ private static _Repo = new MediasRepository();
42
43
 
43
- constructor(
44
- mediasRepository: IMediasRepository,
45
- commonService: CommonService,
46
- media?: IBaseMediasAttr,
47
- ) {
48
- super(mediasRepository, media);
44
+ constructor(commonService: CommonService, media?: IBaseMediasAttr) {
45
+ super(media);
49
46
  this.commonService = commonService;
50
47
  try {
51
48
  this.container = process.env.MEDIA_AZUREBLOB_CONTAINER_NAME;
@@ -1,44 +1,44 @@
1
- import {
2
- BadRequestException,
3
- Injectable,
4
- // Logger,
5
- PipeTransform,
6
- } from '@nestjs/common';
7
-
8
- @Injectable()
9
- export class ValidateSearchPipe implements PipeTransform {
10
- constructor(
11
- private model: any,
12
- private additionalAttributes: string[] = [],
13
- ) {}
14
-
15
- transform(value: string) {
16
- let search = {};
17
-
18
- if (value) {
19
- try {
20
- search = JSON.parse(value);
21
- } catch (err) {
22
- throw new BadRequestException('Bad value for search.');
23
- }
24
- const attributes: string[] = [
25
- ...this.additionalAttributes,
26
- ...Object.keys(this.model.tableAttributes),
27
- ];
28
- const searchAttributes: string[] = Object.keys(search);
29
- const invalidKeys = searchAttributes.filter(
30
- (attr) => !attributes.includes(attr),
31
- );
32
-
33
- if (invalidKeys.length > 0) {
34
- throw new BadRequestException(
35
- `${invalidKeys} ${
36
- invalidKeys.length > 1 ? 'are invalid keys' : 'is an invalid key'
37
- } for search query`,
38
- );
39
- }
40
- }
41
-
42
- return value;
43
- }
44
- }
1
+ import {
2
+ BadRequestException,
3
+ Injectable,
4
+ // Logger,
5
+ PipeTransform,
6
+ } from '@nestjs/common';
7
+
8
+ @Injectable()
9
+ export class ValidateSearchPipe implements PipeTransform {
10
+ constructor(
11
+ private model: any,
12
+ private additionalAttributes: string[] = [],
13
+ ) {}
14
+
15
+ transform(value: string) {
16
+ let search = {};
17
+
18
+ if (value) {
19
+ try {
20
+ search = JSON.parse(value);
21
+ } catch (err) {
22
+ throw new BadRequestException('Bad value for search.');
23
+ }
24
+ const attributes: string[] = [
25
+ ...this.additionalAttributes,
26
+ ...Object.keys(this.model.tableAttributes),
27
+ ];
28
+ const searchAttributes: string[] = Object.keys(search);
29
+ const invalidKeys = searchAttributes.filter(
30
+ (attr) => !attributes.includes(attr),
31
+ );
32
+
33
+ if (invalidKeys.length > 0) {
34
+ throw new BadRequestException(
35
+ `${invalidKeys} ${
36
+ invalidKeys.length > 1 ? 'are invalid keys' : 'is an invalid key'
37
+ } for search query`,
38
+ );
39
+ }
40
+ }
41
+
42
+ return value;
43
+ }
44
+ }
@@ -1,4 +1,4 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
- }
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
+ }
package/tslint.json CHANGED
@@ -1,18 +1,18 @@
1
- {
2
- "defaultSeverity": "error",
3
- "extends": ["tslint:recommended"],
4
- "jsRules": {
5
- "no-unused-expression": true
6
- },
7
- "rules": {
8
- "quotemark": [true, "single"],
9
- "member-access": [false],
10
- "ordered-imports": [false],
11
- "max-line-length": [true, 150],
12
- "member-ordering": [false],
13
- "interface-name": [false],
14
- "arrow-parens": false,
15
- "object-literal-sort-keys": false
16
- },
17
- "rulesDirectory": []
18
- }
1
+ {
2
+ "defaultSeverity": "error",
3
+ "extends": ["tslint:recommended"],
4
+ "jsRules": {
5
+ "no-unused-expression": true
6
+ },
7
+ "rules": {
8
+ "quotemark": [true, "single"],
9
+ "member-access": [false],
10
+ "ordered-imports": [false],
11
+ "max-line-length": [true, 150],
12
+ "member-ordering": [false],
13
+ "interface-name": [false],
14
+ "arrow-parens": false,
15
+ "object-literal-sort-keys": false
16
+ },
17
+ "rulesDirectory": []
18
+ }