@comasoft/nestjs 0.1.71 → 0.1.82

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.
@@ -1,5 +1,6 @@
1
1
  import { DataSource, Repository } from 'typeorm';
2
2
  import { Category } from '../database/entities';
3
+ import { CustomParamsDto } from '../dto/custom-params.dto';
3
4
  import { CreateCategoryBaseDto, UpdateCategoryBaseDto, UpdateCategorySortBaseDto } from './dto';
4
5
  export declare class CategoryService {
5
6
  protected readonly repository: Repository<Category>;
@@ -18,6 +19,16 @@ export declare class CategoryService {
18
19
  findAll(type: string): Promise<{
19
20
  items: Category[];
20
21
  }>;
22
+ findAllPaginated(c_params: CustomParamsDto, type: string): Promise<{
23
+ items: Category[];
24
+ pagination: {
25
+ page: number;
26
+ limit: number;
27
+ count: number;
28
+ count_total: number;
29
+ count_page: number;
30
+ };
31
+ }>;
21
32
  findOne(id: number): Promise<Category>;
22
33
  update(id: number, body: UpdateCategoryBaseDto): Promise<Category>;
23
34
  remove(id: number): Promise<void>;
@@ -1 +1 @@
1
- var e=this&&this.__decorate||function(e,t,i,r){var o,n=arguments.length,s=n<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,r);else for(var d=e.length-1;d>=0;d--)(o=e[d])&&(s=(n<3?o(s):n>3?o(t,i,s):o(t,i))||s);return n>3&&s&&Object.defineProperty(t,i,s),s},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}},r=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(o,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r.throw(e))}catch(e){n(e)}}function step(e){e.done?o(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CategoryService=void 0;const o=require("@nestjs/common"),n=require("@nestjs/typeorm"),s=require("typeorm"),d=require("../database/entities"),a=require("../shared/error-codes");let c=class CategoryService{constructor(e,t){this.repository=e,this.dataSource=t}validateCategoryLimit(e){return r(this,void 0,void 0,function*(){throw new o.BadRequestException("validateCategoryLimit must be implemented in app service")})}checkCategoryUsage(e){return r(this,void 0,void 0,function*(){throw new o.BadRequestException("checkCategoryUsage must be implemented in app service")})}create(e){return r(this,void 0,void 0,function*(){const{type:t,name:i,description:r,slug:n}=e;yield this.validateCategoryLimit(t);if(yield this.repository.findOne({where:{type:t,name:i}}))throw new o.ConflictException({message:"Category name already exists",error_code:a.ErrorCode.CATEGORY_NAME_ALREADY_EXISTS});const s=(yield this.repository.count({where:{type:t}}))+1;return yield this.repository.save(Object.assign(Object.assign({},e),{sort:s}))})}findAll(e){return r(this,void 0,void 0,function*(){return{items:yield this.repository.find({where:{type:e},order:{sort:"ASC"}})}})}findOne(e){return r(this,void 0,void 0,function*(){const t=yield this.repository.findOne({where:{id:e}});if(!t)throw new o.NotFoundException(`Category with ID ${e} not found`);return t})}update(e,t){return r(this,void 0,void 0,function*(){const i=yield this.repository.findOne({where:{id:e}});if(!i)throw new o.NotFoundException(`Category with ID ${e} not found`);if(yield this.repository.findOne({where:{type:i.type,name:t.name,id:(0,s.Not)(e)}}))throw new o.ConflictException({message:"Category name already exists",error_code:a.ErrorCode.CATEGORY_NAME_ALREADY_EXISTS});yield this.repository.update(e,t);return yield this.repository.findOne({where:{id:e}})})}remove(e){return r(this,void 0,void 0,function*(){if(!(yield this.repository.findOne({where:{id:e}})))throw new o.NotFoundException(`Category with ID ${e} not found`);yield this.checkCategoryUsage(e),yield this.repository.update(e,{is_active:!1,deleted_at:new Date})})}updateSort(e){return r(this,void 0,void 0,function*(){const{items:t,type:i}=e,r=yield this.repository.find({where:{type:i}});if(r.length!==t.length)throw new o.BadRequestException("Invalid items ids provided");const n=r.map(e=>{var i;return Object.assign(Object.assign({},e),{sort:(null===(i=t.find(t=>t.id===e.id))||void 0===i?void 0:i.sort)||e.sort})});yield this.repository.save(n)})}};exports.CategoryService=c,exports.CategoryService=c=e([(0,o.Injectable)(),i(0,(0,n.InjectRepository)(d.Category)),t("design:paramtypes",[s.Repository,s.DataSource])],c);
1
+ var e=this&&this.__decorate||function(e,t,i,r){var o,n=arguments.length,s=n<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(n<3?o(s):n>3?o(t,i,s):o(t,i))||s);return n>3&&s&&Object.defineProperty(t,i,s),s},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}},r=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(o,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r.throw(e))}catch(e){n(e)}}function step(e){e.done?o(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CategoryService=void 0;const o=require("@nestjs/common"),n=require("@nestjs/typeorm"),s=require("typeorm"),a=require("../database/entities"),d=require("../shared/error-codes"),c=require("../utils"),u=require("../utils/pagination-qb.utils");let y=class CategoryService{constructor(e,t){this.repository=e,this.dataSource=t}validateCategoryLimit(e){return r(this,void 0,void 0,function*(){throw new o.BadRequestException("validateCategoryLimit must be implemented in app service")})}checkCategoryUsage(e){return r(this,void 0,void 0,function*(){throw new o.BadRequestException("checkCategoryUsage must be implemented in app service")})}create(e){return r(this,void 0,void 0,function*(){const{type:t,name:i,description:r,slug:n}=e;yield this.validateCategoryLimit(t);if(yield this.repository.findOne({where:{type:t,name:i}}))throw new o.ConflictException({message:"Category name already exists",error_code:d.ErrorCode.CATEGORY_NAME_ALREADY_EXISTS});const s=(yield this.repository.count({where:{type:t}}))+1;return yield this.repository.save(Object.assign(Object.assign({},e),{sort:s}))})}findAll(e){return r(this,void 0,void 0,function*(){return{items:yield this.repository.find({where:{type:e},order:{sort:"ASC"}})}})}findAllPaginated(e,t){return r(this,void 0,void 0,function*(){const{_page:i,_limit:r,_keyword:o,_group:n,_sort:s}=e;let a=this.repository.createQueryBuilder("category").where("category.type = :type",{type:t});a=(0,u.applyFiltersAndSorting)(a,{_keyword:o,_group:n,_sort:s,keywordFields:["name"],aliasName:"category"});return yield(0,c.paginate)(a,{page:i,limit:r})})}findOne(e){return r(this,void 0,void 0,function*(){const t=yield this.repository.findOne({where:{id:e}});if(!t)throw new o.NotFoundException(`Category with ID ${e} not found`);return t})}update(e,t){return r(this,void 0,void 0,function*(){const i=yield this.repository.findOne({where:{id:e}});if(!i)throw new o.NotFoundException(`Category with ID ${e} not found`);if(yield this.repository.findOne({where:{type:i.type,name:t.name,id:(0,s.Not)(e)}}))throw new o.ConflictException({message:"Category name already exists",error_code:d.ErrorCode.CATEGORY_NAME_ALREADY_EXISTS});yield this.repository.update(e,t);return yield this.repository.findOne({where:{id:e}})})}remove(e){return r(this,void 0,void 0,function*(){if(!(yield this.repository.findOne({where:{id:e}})))throw new o.NotFoundException(`Category with ID ${e} not found`);yield this.checkCategoryUsage(e),yield this.repository.update(e,{is_active:!1,deleted_at:new Date})})}updateSort(e){return r(this,void 0,void 0,function*(){const{items:t,type:i}=e,r=yield this.repository.find({where:{type:i}});if(r.length!==t.length)throw new o.BadRequestException("Invalid items ids provided");const n=r.map(e=>{var i;return Object.assign(Object.assign({},e),{sort:(null===(i=t.find(t=>t.id===e.id))||void 0===i?void 0:i.sort)||e.sort})});yield this.repository.save(n)})}};exports.CategoryService=y,exports.CategoryService=y=e([(0,o.Injectable)(),i(0,(0,n.InjectRepository)(a.Category)),t("design:paramtypes",[s.Repository,s.DataSource])],y);
@@ -1,18 +1,20 @@
1
- import { FILE_STATUS } from '../../enums.common';
1
+ import { FILE_STATUS, FILE_STORAGE_TYPE } from '../../enums.common';
2
2
  export declare class File {
3
3
  id: number;
4
4
  status: FILE_STATUS;
5
+ storage_type: FILE_STORAGE_TYPE;
5
6
  target: string;
6
7
  target_id: number;
7
8
  user_id: number;
8
- original_name: string;
9
+ original_name?: string;
9
10
  file_name: string;
10
11
  path: string;
11
- mime_type: string;
12
- size: number;
12
+ mime_type?: string;
13
+ size?: number;
13
14
  meta: Record<string, any>;
14
15
  group_number: number;
15
16
  sort: number;
17
+ has_thumbnail: boolean;
16
18
  is_active: boolean;
17
19
  created_at: Date;
18
20
  updated_at: Date;
@@ -1 +1 @@
1
- var e=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,p=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(p=(r<3?n(p):r>3?n(t,o,p):n(t,o))||p);return r>3&&p&&Object.defineProperty(t,o,p),p},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.File=void 0;const o=require("typeorm"),i=require("../../enums.common");let n=class File{};exports.File=n,e([(0,o.PrimaryGeneratedColumn)({name:"id",primaryKeyConstraintName:"PK_files"}),t("design:type",Number)],n.prototype,"id",void 0),e([(0,o.Column)("enum",{enum:i.FILE_STATUS}),t("design:type",String)],n.prototype,"status",void 0),e([(0,o.Column)("varchar",{length:25}),t("design:type",String)],n.prototype,"target",void 0),e([(0,o.Column)("int"),t("design:type",Number)],n.prototype,"target_id",void 0),e([(0,o.Column)("int",{nullable:!0}),t("design:type",Number)],n.prototype,"user_id",void 0),e([(0,o.Column)("varchar",{length:255}),t("design:type",String)],n.prototype,"original_name",void 0),e([(0,o.Column)("varchar",{length:255,comment:"UUID 기반 파일명"}),t("design:type",String)],n.prototype,"file_name",void 0),e([(0,o.Column)("varchar",{length:255,comment:"[target]/YYMMDD/[file_name]"}),t("design:type",String)],n.prototype,"path",void 0),e([(0,o.Column)("varchar",{length:100}),t("design:type",String)],n.prototype,"mime_type",void 0),e([(0,o.Column)("int"),t("design:type",Number)],n.prototype,"size",void 0),e([(0,o.Column)("jsonb",{nullable:!0}),t("design:type",Object)],n.prototype,"meta",void 0),e([(0,o.Column)("smallint",{default:0,comment:"0: cover, 1: details ..."}),t("design:type",Number)],n.prototype,"group_number",void 0),e([(0,o.Column)("int",{default:0}),t("design:type",Number)],n.prototype,"sort",void 0),e([(0,o.Column)("boolean",{default:!0}),t("design:type",Boolean)],n.prototype,"is_active",void 0),e([(0,o.CreateDateColumn)({type:"timestamptz"}),t("design:type",Date)],n.prototype,"created_at",void 0),e([(0,o.UpdateDateColumn)({type:"timestamptz"}),t("design:type",Date)],n.prototype,"updated_at",void 0),e([(0,o.DeleteDateColumn)({type:"timestamptz"}),t("design:type",Date)],n.prototype,"deleted_at",void 0),exports.File=n=e([(0,o.Entity)("files"),(0,o.Index)("IDX_files",["id"],{where:"deleted_at IS NULL"}),(0,o.Index)("IDX_files_target_target_id",["target","target_id"]),(0,o.Index)("IDX_files_user_id",["user_id"])],n);
1
+ var e=this&&this.__decorate||function(e,t,o,n){var i,r=arguments.length,a=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,n);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(r<3?i(a):r>3?i(t,o,a):i(t,o))||a);return r>3&&a&&Object.defineProperty(t,o,a),a},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.File=void 0;const o=require("typeorm"),n=require("../../enums.common");let i=class File{};exports.File=i,e([(0,o.PrimaryGeneratedColumn)({name:"id",primaryKeyConstraintName:"PK_files"}),t("design:type",Number)],i.prototype,"id",void 0),e([(0,o.Column)("enum",{enum:n.FILE_STATUS}),t("design:type",String)],i.prototype,"status",void 0),e([(0,o.Column)("enum",{enum:n.FILE_STORAGE_TYPE,default:n.FILE_STORAGE_TYPE.AWS}),t("design:type",String)],i.prototype,"storage_type",void 0),e([(0,o.Column)("varchar",{length:25}),t("design:type",String)],i.prototype,"target",void 0),e([(0,o.Column)("int"),t("design:type",Number)],i.prototype,"target_id",void 0),e([(0,o.Column)("int",{nullable:!0}),t("design:type",Number)],i.prototype,"user_id",void 0),e([(0,o.Column)("varchar",{length:255,nullable:!0}),t("design:type",String)],i.prototype,"original_name",void 0),e([(0,o.Column)("varchar",{length:255,comment:"object storage: UUID 기반 파일명, remote: file_url"}),t("design:type",String)],i.prototype,"file_name",void 0),e([(0,o.Column)("varchar",{length:255,comment:"object storage: [target]/[path:YYMMDD]/[file_name], remote: file_url"}),t("design:type",String)],i.prototype,"path",void 0),e([(0,o.Column)("varchar",{length:100,nullable:!0}),t("design:type",String)],i.prototype,"mime_type",void 0),e([(0,o.Column)("int",{nullable:!0}),t("design:type",Number)],i.prototype,"size",void 0),e([(0,o.Column)("jsonb",{nullable:!0}),t("design:type",Object)],i.prototype,"meta",void 0),e([(0,o.Column)("smallint",{default:0,comment:"0: cover, 1: details ..."}),t("design:type",Number)],i.prototype,"group_number",void 0),e([(0,o.Column)("int",{default:0}),t("design:type",Number)],i.prototype,"sort",void 0),e([(0,o.Column)("boolean",{default:!0}),t("design:type",Boolean)],i.prototype,"has_thumbnail",void 0),e([(0,o.Column)("boolean",{default:!0}),t("design:type",Boolean)],i.prototype,"is_active",void 0),e([(0,o.CreateDateColumn)({type:"timestamptz"}),t("design:type",Date)],i.prototype,"created_at",void 0),e([(0,o.UpdateDateColumn)({type:"timestamptz"}),t("design:type",Date)],i.prototype,"updated_at",void 0),e([(0,o.DeleteDateColumn)({type:"timestamptz"}),t("design:type",Date)],i.prototype,"deleted_at",void 0),exports.File=i=e([(0,o.Entity)("files"),(0,o.Index)("IDX_files",["id"],{where:"deleted_at IS NULL"}),(0,o.Index)("IDX_files_target_target_id",["target","target_id"]),(0,o.Index)("IDX_files_user_id",["user_id"])],i);
@@ -1,6 +1,9 @@
1
1
  declare class FileMetaDto {
2
2
  width?: number;
3
3
  height?: number;
4
+ orientation?: number;
5
+ duration?: number;
6
+ encoding?: string;
4
7
  }
5
8
  export declare class FileDto {
6
9
  id: number;
@@ -1 +1 @@
1
- var e=this&&this.__decorate||function(e,t,o,i){var r,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,o,i);else for(var p=e.length-1;p>=0;p--)(r=e[p])&&(l=(s<3?r(l):s>3?r(t,o,l):r(t,o))||l);return s>3&&l&&Object.defineProperty(t,o,l),l},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileThumbnailDto=exports.FileDto=void 0;const o=require("@nestjs/swagger"),i=require("class-transformer");class FileMetaDto{}e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"width",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"height",void 0);class FileDto{}exports.FileDto=FileDto,e([(0,i.Expose)(),t("design:type",Number)],FileDto.prototype,"id",void 0),e([(0,i.Expose)(),t("design:type",String)],FileDto.prototype,"original_name",void 0),e([(0,i.Expose)(),t("design:type",String)],FileDto.prototype,"mime_type",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileDto.prototype,"size",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>`${process.env.CDN_URL||""}/uploads/${e.target}/${e.path}/${e.file_name}`),t("design:type",String)],FileDto.prototype,"full_url",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>{var t;return(null===(t=e.mime_type)||void 0===t?void 0:t.startsWith("image/"))?`${process.env.CDN_URL||""}/thumbnails/${e.target}/${e.path}/sm/${e.file_name}`:void 0}),t("design:type",String)],FileDto.prototype,"thumbnail_small",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>{var t;return(null===(t=e.mime_type)||void 0===t?void 0:t.startsWith("image/"))?`${process.env.CDN_URL||""}/thumbnails/${e.target}/${e.path}/md/${e.file_name}`:void 0}),t("design:type",String)],FileDto.prototype,"thumbnail_medium",void 0),e([(0,i.Expose)(),(0,i.Type)(()=>FileMetaDto),(0,i.Transform)(({obj:e})=>e.meta),t("design:type",FileMetaDto)],FileDto.prototype,"meta",void 0);class FileThumbnailDto extends((0,o.PickType)(FileDto,["thumbnail_small","thumbnail_medium"])){}exports.FileThumbnailDto=FileThumbnailDto;
1
+ var e=this&&this.__decorate||function(e,t,o,i){var r,p=arguments.length,s=p<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var n=e.length-1;n>=0;n--)(r=e[n])&&(s=(p<3?r(s):p>3?r(t,o,s):r(t,o))||s);return p>3&&s&&Object.defineProperty(t,o,s),s},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileThumbnailDto=exports.FileDto=void 0;const o=require("@nestjs/swagger"),i=require("class-transformer");class FileMetaDto{}e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"width",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"height",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"orientation",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileMetaDto.prototype,"duration",void 0),e([(0,i.Expose)(),t("design:type",String)],FileMetaDto.prototype,"encoding",void 0);class FileDto{}exports.FileDto=FileDto,e([(0,i.Expose)(),t("design:type",Number)],FileDto.prototype,"id",void 0),e([(0,i.Expose)(),t("design:type",String)],FileDto.prototype,"original_name",void 0),e([(0,i.Expose)(),t("design:type",String)],FileDto.prototype,"mime_type",void 0),e([(0,i.Expose)(),t("design:type",Number)],FileDto.prototype,"size",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>`${process.env.CDN_URL||""}/uploads/${e.target}/${e.path}/${e.file_name}`),t("design:type",String)],FileDto.prototype,"full_url",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>{var t;return(null===(t=e.mime_type)||void 0===t?void 0:t.startsWith("image/"))?`${process.env.CDN_URL||""}/thumbnails/${e.target}/${e.path}/sm/${e.file_name}`:void 0}),t("design:type",String)],FileDto.prototype,"thumbnail_small",void 0),e([(0,i.Expose)(),(0,i.Transform)(({obj:e})=>{var t;return(null===(t=e.mime_type)||void 0===t?void 0:t.startsWith("image/"))?`${process.env.CDN_URL||""}/thumbnails/${e.target}/${e.path}/md/${e.file_name}`:void 0}),t("design:type",String)],FileDto.prototype,"thumbnail_medium",void 0),e([(0,i.Expose)(),(0,i.Type)(()=>FileMetaDto),(0,i.Transform)(({obj:e})=>e.meta),t("design:type",FileMetaDto)],FileDto.prototype,"meta",void 0);class FileThumbnailDto extends((0,o.PickType)(FileDto,["thumbnail_small","thumbnail_medium"])){}exports.FileThumbnailDto=FileThumbnailDto;
@@ -40,6 +40,13 @@ export declare enum FILE_STATUS {
40
40
  FAILED = "failed",
41
41
  DELETED = "deleted"
42
42
  }
43
+ export declare enum FILE_STORAGE_TYPE {
44
+ AWS = "aws",
45
+ NCP = "ncp",
46
+ REMOTE = "remote",
47
+ LOCAL = "local",
48
+ OTHER = "other"
49
+ }
43
50
  export declare enum NOTIFICATION_STATUS {
44
51
  PENDING = "pending",
45
52
  SENT = "sent",
@@ -1 +1 @@
1
- var e,o,t,n,E,p,i;Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIKE_TYPE=exports.NOTIFICATION_STATUS=exports.FILE_STATUS=exports.AUDIT_ACTION=exports.DEVICE_TYPE=exports.MIME_TYPE=exports.FILE_TYPE=void 0,function(e){e.IMAGE="IMAGE",e.VIDEO="VIDEO",e.DOCUMENT="DOCUMENT",e.AUDIO="AUDIO",e.OTHER="OTHER"}(e||(exports.FILE_TYPE=e={})),function(e){e.JPEG="image/jpeg",e.PNG="image/png",e.GIF="image/gif",e.PDF="application/pdf",e.DOC="application/msword",e.DOCX="application/vnd.openxmlformats-officedocument.wordprocessingml.document",e.XLS="application/vnd.ms-excel",e.XLSX="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",e.PPT="application/vnd.ms-powerpoint",e.PPTX="application/vnd.openxmlformats-officedocument.presentationml.presentation",e.TXT="text/plain",e.HTML="text/html",e.CSV="text/csv"}(o||(exports.MIME_TYPE=o={})),function(e){e.ANDROID="android",e.IOS="ios",e.PC="pc",e.MAC="mac",e.OTHER="other"}(t||(exports.DEVICE_TYPE=t={})),function(e){e.CREATE="create",e.READ="read",e.UPDATE="update",e.DELETE="delete",e.DOWNLOAD="download"}(n||(exports.AUDIT_ACTION=n={})),function(e){e.PENDING="pending",e.COMPLETED="completed",e.FAILED="failed",e.DELETED="deleted"}(E||(exports.FILE_STATUS=E={})),function(e){e.PENDING="pending",e.SENT="sent",e.READ="read",e.FAILED="failed"}(p||(exports.NOTIFICATION_STATUS=p={})),function(e){e.LIKE="like",e.DISLIKE="dislike",e.NONE="none"}(i||(exports.LIKE_TYPE=i={}));
1
+ var e,o,t,E,n,p,T,i;Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIKE_TYPE=exports.NOTIFICATION_STATUS=exports.FILE_STORAGE_TYPE=exports.FILE_STATUS=exports.AUDIT_ACTION=exports.DEVICE_TYPE=exports.MIME_TYPE=exports.FILE_TYPE=void 0,function(e){e.IMAGE="IMAGE",e.VIDEO="VIDEO",e.DOCUMENT="DOCUMENT",e.AUDIO="AUDIO",e.OTHER="OTHER"}(e||(exports.FILE_TYPE=e={})),function(e){e.JPEG="image/jpeg",e.PNG="image/png",e.GIF="image/gif",e.PDF="application/pdf",e.DOC="application/msword",e.DOCX="application/vnd.openxmlformats-officedocument.wordprocessingml.document",e.XLS="application/vnd.ms-excel",e.XLSX="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",e.PPT="application/vnd.ms-powerpoint",e.PPTX="application/vnd.openxmlformats-officedocument.presentationml.presentation",e.TXT="text/plain",e.HTML="text/html",e.CSV="text/csv"}(o||(exports.MIME_TYPE=o={})),function(e){e.ANDROID="android",e.IOS="ios",e.PC="pc",e.MAC="mac",e.OTHER="other"}(t||(exports.DEVICE_TYPE=t={})),function(e){e.CREATE="create",e.READ="read",e.UPDATE="update",e.DELETE="delete",e.DOWNLOAD="download"}(E||(exports.AUDIT_ACTION=E={})),function(e){e.PENDING="pending",e.COMPLETED="completed",e.FAILED="failed",e.DELETED="deleted"}(n||(exports.FILE_STATUS=n={})),function(e){e.AWS="aws",e.NCP="ncp",e.REMOTE="remote",e.LOCAL="local",e.OTHER="other"}(p||(exports.FILE_STORAGE_TYPE=p={})),function(e){e.PENDING="pending",e.SENT="sent",e.READ="read",e.FAILED="failed"}(T||(exports.NOTIFICATION_STATUS=T={})),function(e){e.LIKE="like",e.DISLIKE="dislike",e.NONE="none"}(i||(exports.LIKE_TYPE=i={}));
@@ -1 +1,2 @@
1
1
  export * from './http-exception.filter';
2
+ export * from './validation-exception.filter';
@@ -1 +1 @@
1
- var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__exportStar||function(t,r){for(var i in t)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||e(r,t,i)};Object.defineProperty(exports,"__esModule",{value:!0}),t(require("./http-exception.filter"),exports);
1
+ var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__exportStar||function(t,r){for(var i in t)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||e(r,t,i)};Object.defineProperty(exports,"__esModule",{value:!0}),t(require("./http-exception.filter"),exports),t(require("./validation-exception.filter"),exports);
@@ -0,0 +1,8 @@
1
+ import { ArgumentsHost, ExceptionFilter, UnprocessableEntityException } from '@nestjs/common';
2
+ export declare class ValidationExceptionFilter implements ExceptionFilter {
3
+ catch(exception: UnprocessableEntityException, host: ArgumentsHost): void;
4
+ private flattenValidationErrors;
5
+ private parseStringError;
6
+ private formatValidationErrors;
7
+ private constraintKeyToErrorCode;
8
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,s){var r,I=arguments.length,n=I<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,s);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(I<3?r(n):I>3?r(t,i,n):r(t,i))||n);return I>3&&n&&Object.defineProperty(t,i,n),n};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ValidationExceptionFilter=void 0;const t=require("@nestjs/common");let i=class ValidationExceptionFilter{catch(e,t){const i=t.switchToHttp(),s=i.getResponse(),r=e.getResponse(),I=this.flattenValidationErrors(r.message);s.status(422).json({success:!1,status:422,path:i.getRequest().url,errors:I})}flattenValidationErrors(e){return Array.isArray(e)&&0===e.length?[{field:"unknown",code:"VALIDATION_ERROR",message:"Validation failed"}]:Array.isArray(e)&&e.length>0&&"string"==typeof e[0]?e.map(e=>this.parseStringError(e)):Array.isArray(e)&&e.length>0&&"object"==typeof e[0]?this.formatValidationErrors(e):"string"==typeof e?[{field:"unknown",code:"VALIDATION_ERROR",message:e}]:[{field:"unknown",code:"VALIDATION_ERROR",message:"Validation failed"}]}parseStringError(e){const t=e.trim().split(" ")[0];return{field:/^[a-z_][a-z0-9_]*$/i.test(t)?t:"unknown",code:"VALIDATION_ERROR",message:e}}formatValidationErrors(e,t=""){const i=[];for(const s of e){const e=t?`${t}.${s.property}`:s.property;if(s.constraints)for(const[t,r]of Object.entries(s.constraints))i.push({field:e,code:this.constraintKeyToErrorCode(t),message:r});if(s.children&&s.children.length>0){const t=this.formatValidationErrors(s.children,e);i.push(...t)}}return i}constraintKeyToErrorCode(e){return{isNotEmpty:"REQUIRED",isDefined:"REQUIRED",isOptional:"OPTIONAL",isEmail:"INVALID_EMAIL",isUrl:"INVALID_URL",isUUID:"INVALID_UUID",isPhoneNumber:"INVALID_PHONE",isISO8601:"INVALID_DATE_FORMAT",isMongoId:"INVALID_MONGO_ID",isJWT:"INVALID_JWT",isHexadecimal:"INVALID_HEX",isHash:"INVALID_HASH",isAlpha:"INVALID_ALPHA",isAlphanumeric:"INVALID_ALPHANUMERIC",isAscii:"INVALID_ASCII",isBase64:"INVALID_BASE64",isJSON:"INVALID_JSON",isLowercase:"INVALID_LOWERCASE",isUppercase:"INVALID_UPPERCASE",isCreditCard:"INVALID_CREDIT_CARD",isCurrency:"INVALID_CURRENCY",isDecimal:"INVALID_DECIMAL",isIP:"INVALID_IP",isPort:"INVALID_PORT",isMACAddress:"INVALID_MAC_ADDRESS",isMimeType:"INVALID_MIME_TYPE",isLatLong:"INVALID_LAT_LONG",isLocale:"INVALID_LOCALE",minLength:"MIN_LENGTH",maxLength:"MAX_LENGTH",length:"INVALID_LENGTH",matches:"PATTERN_MISMATCH",contains:"MUST_CONTAIN",notContains:"MUST_NOT_CONTAIN",min:"MIN_VALUE",max:"MAX_VALUE",isPositive:"MUST_BE_POSITIVE",isNegative:"MUST_BE_NEGATIVE",isDivisibleBy:"DIVISIBLE_BY",isString:"INVALID_TYPE_STRING",isNumber:"INVALID_TYPE_NUMBER",isInt:"INVALID_TYPE_INTEGER",isBoolean:"INVALID_TYPE_BOOLEAN",isArray:"INVALID_TYPE_ARRAY",isObject:"INVALID_TYPE_OBJECT",isDate:"INVALID_TYPE_DATE",isInstance:"INVALID_TYPE_INSTANCE",arrayMinSize:"ARRAY_MIN_SIZE",arrayMaxSize:"ARRAY_MAX_SIZE",arrayUnique:"ARRAY_UNIQUE",arrayNotEmpty:"ARRAY_NOT_EMPTY",arrayContains:"ARRAY_MUST_CONTAIN",arrayNotContains:"ARRAY_MUST_NOT_CONTAIN",isEnum:"INVALID_ENUM",isIn:"INVALID_VALUE",isNotIn:"INVALID_VALUE",equals:"MUST_EQUAL",notEquals:"MUST_NOT_EQUAL",whitelistValidation:"INVALID_PROPERTY",isNotEmptyObject:"REQUIRED_OBJECT",minDate:"MIN_DATE",maxDate:"MAX_DATE"}[e]||e.toUpperCase()}};exports.ValidationExceptionFilter=i,exports.ValidationExceptionFilter=i=e([(0,t.Catch)(t.UnprocessableEntityException)],i);
@@ -1 +1 @@
1
- var e=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(a,o){function fulfilled(e){try{step(i.next(e))}catch(e){o(e)}}function rejected(e){try{step(i.throw(e))}catch(e){o(e)}}function step(e){e.done?a(e.value):function adopt(e){return e instanceof n?e:new n(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.paginate=function paginate(t,n){return e(this,void 0,void 0,function*(){const{page:e,limit:i}=n,a=t.connection.createQueryBuilder().select("COUNT(*)","count").from(`(${t.getQuery()})`,"subquery").setParameters(t.getParameters()),[o,r]=yield Promise.all([t.skip((e-1)*i).take(i).getMany(),a.getRawOne().then(e=>parseInt(e.count))]),u=Math.ceil(r/i);return{items:o,pagination:{page:e,limit:i,count:o.length,count_total:r,count_page:u}}})};
1
+ var t=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(o,a){function fulfilled(t){try{step(i.next(t))}catch(t){a(t)}}function rejected(t){try{step(i.throw(t))}catch(t){a(t)}}function step(t){t.done?o(t.value):function adopt(t){return t instanceof n?t:new n(function(e){e(t)})}(t.value).then(fulfilled,rejected)}step((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.paginate=function paginate(e,n){return t(this,void 0,void 0,function*(){const{page:t,limit:i}=n,o=e.clone(),[a,c]=yield Promise.all([e.skip((t-1)*i).take(i).getMany(),o.getCount()]),u=Math.ceil(c/i);return{items:a,pagination:{page:t,limit:i,count:a.length,count_total:c,count_page:u}}})};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comasoft/nestjs",
3
- "version": "0.1.71",
3
+ "version": "0.1.82",
4
4
  "description": "",
5
5
  "private": false,
6
6
  "exports": {