swagger in config

and update entity
This commit is contained in:
harshithnrao 2025-03-03 13:33:12 +05:30
parent 66391a2ab2
commit 1d40b6544a
14 changed files with 144 additions and 12 deletions

View File

@ -41,4 +41,8 @@ export class AppConfigService {
getMailConfig() { getMailConfig() {
return configMaster[this.defaultEnv].mailConfig; return configMaster[this.defaultEnv].mailConfig;
} }
getSwaggerConfig() {
return configMaster[this.defaultEnv].swaggerConfig;
}
} }

View File

@ -29,6 +29,13 @@
"defaults": { "defaults": {
"from": "\"No Reply\" <admin@wct.co.in>" "from": "\"No Reply\" <admin@wct.co.in>"
} }
},
"swaggerConfig": {
"swagger": {
"title": "Remedify Payment API",
"description": "Remedify Payment API",
"version": "1.0.0"
}
} }
} }
} }

View File

@ -29,6 +29,14 @@
"defaults": { "defaults": {
"from": "\"No Reply\" <admin@wct.co.in>" "from": "\"No Reply\" <admin@wct.co.in>"
} }
},
"swaggerConfig": {
"swagger": {
"title": "Remedify Payment API",
"description": "Remedify Payment API",
"version": "1.0.0",
"tag": "Remedify Payment API"
}
} }
} }
} }

View File

@ -41,6 +41,10 @@ export class AppService {
const emailConfig = this.configService.getMailConfig(); const emailConfig = this.configService.getMailConfig();
this.commonService.mailConfig = emailConfig; this.commonService.mailConfig = emailConfig;
Utility.mailConfig = emailConfig; Utility.mailConfig = emailConfig;
const swaggerConfig = this.configService.getSwaggerConfig();
this.commonService.swaggerConfig = swaggerConfig;
Utility.swaggerConfig = swaggerConfig;
} }
getModels() { getModels() {

View File

@ -4,7 +4,8 @@ export class Utility {
static sequelize: Sequelize; static sequelize: Sequelize;
static appPort: number = 3000; static appPort: number = 3000;
static models: any; static models: any;
static fileConfig: any = {"storagePath": "./uploads"}; static fileConfig: any = { "storagePath": "./uploads" };
static swaggerConfig: any;
static mailConfig: any = { static mailConfig: any = {
"transport": { "transport": {
"host": "smtppro.zoho.in", "host": "smtppro.zoho.in",

View File

@ -7,6 +7,7 @@ export class CommonService {
models: any; models: any;
fileConfig: any; fileConfig: any;
mailConfig: any; mailConfig: any;
swaggerConfig: any;
constructor() { constructor() {
} }

View File

@ -1,29 +1,36 @@
import { Table, Column, Model, Default, DataType } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({tableName: 'crud_config_info', paranoid : true}) @Table({tableName: 'crud_config_info', paranoid: true})
export default class DataModel extends Model { export default class DataModel extends Model {
@ApiProperty({ type: Number })
@Column({type: DataType.NUMBER}) @Column({type: DataType.NUMBER})
endPtNm: number; endPtNm: number;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT}) @Column({type: DataType.TEXT})
sqlQueryText: string; sqlQueryText: string;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT}) @Column({type: DataType.TEXT})
opsTypeName: string; opsTypeName: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column({type: DataType.DATEONLY}) @Column({type: DataType.DATEONLY})
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date('2070-12-31') })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column({type: DataType.DATEONLY}) @Column({type: DataType.DATEONLY})
validTill: Date; validTill: Date;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT}) @Column({type: DataType.TEXT})
createBy: string; createBy: string;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT}) @Column({type: DataType.TEXT})
modifiedBy: string; modifiedBy: string;
}
}

View File

@ -1,60 +1,78 @@
import { Table, Column, Model, Default, DataType, ForeignKey } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType, ForeignKey } from 'sequelize-typescript';
import Payment from 'src/payment/payment.entity'; import { ApiProperty } from '@nestjs/swagger';
import Payment from 'src/payment/payment.entity';
@Table({ tableName: 'invoice' , paranoid : true}) @Table({ tableName: 'invoice', paranoid: true })
export default class Invoice extends Model { export default class Invoice extends Model {
@ApiProperty({ type: Number })
@Column({ type: DataType.BIGINT, allowNull: false }) @Column({ type: DataType.BIGINT, allowNull: false })
user_id: number; user_id: number;
@ApiProperty({ type: Number })
@ForeignKey(() => Payment) @ForeignKey(() => Payment)
@Column({ type: DataType.BIGINT, allowNull: false, field: 'payment_id' }) @Column({ type: DataType.BIGINT, allowNull: false, field: 'payment_id' })
payment_id: number; payment_id: number;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'invoice_number' }) @Column({ type: DataType.TEXT, field: 'invoice_number' })
invoice_number: string; invoice_number: string;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'amount' }) @Column({ type: DataType.NUMBER, field: 'amount' })
amount: number; amount: number;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'remaining_balance' }) @Column({ type: DataType.NUMBER, field: 'remaining_balance' })
remaining_balance: number; remaining_balance: number;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'tax' }) @Column({ type: DataType.NUMBER, field: 'tax' })
tax: number; tax: number;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'issue_date' }) @Column({ type: DataType.DATEONLY, field: 'issue_date' })
issue_date: Date; issue_date: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'due_date' }) @Column({ type: DataType.DATEONLY, field: 'due_date' })
due_date: Date; due_date: Date;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'status' }) @Column({ type: DataType.TEXT, field: 'status' })
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column({ type: DataType.DATEONLY, field: 'validFrom' }) @Column({ type: DataType.DATEONLY, field: 'validFrom' })
valid_from: Date; valid_from: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column({ type: DataType.DATEONLY, field: 'validTill' }) @Column({ type: DataType.DATEONLY, field: 'validTill' })
valid_till: Date; valid_till: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'createdAt' }) @Column({ type: DataType.DATEONLY, field: 'createdAt' })
created_at: Date; created_at: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'updatedAt' }) @Column({ type: DataType.DATEONLY, field: 'updatedAt' })
updated_at: Date; updated_at: Date;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'createdBy' }) @Column({ type: DataType.TEXT, field: 'createdBy' })
created_by: string; created_by: string;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'modifiedBy' }) @Column({ type: DataType.TEXT, field: 'modifiedBy' })
modified_by: string; modified_by: string;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'deletedAt' }) @Column({ type: DataType.DATEONLY, field: 'deletedAt' })
deleted_at: Date; deleted_at: Date;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'version' }) @Column({ type: DataType.NUMBER, field: 'version' })
version: number; version: number;

View File

@ -9,10 +9,19 @@ async function bootstrap() {
Utility.appPort = configMaster.local.appConfig.port; Utility.appPort = configMaster.local.appConfig.port;
Utility.mailConfig = configMaster.local.mailConfig; Utility.mailConfig = configMaster.local.mailConfig;
Utility.fileConfig = configMaster.local.fileConfig; Utility.fileConfig = configMaster.local.fileConfig;
Utility.swaggerConfig = configMaster.local.swaggerConfig;
const app = await NestFactory.create(AppModule, { cors: true }); const app = await NestFactory.create(AppModule, { cors: true });
const config = new DocumentBuilder().setTitle('Payment API').setVersion('1.0').addTag('payments').build();
const config = new DocumentBuilder()
.setTitle(Utility.swaggerConfig.swagger.title)
.setVersion(Utility.swaggerConfig.swagger.version)
.addTag(Utility.swaggerConfig.swagger.tag)
.setDescription(Utility.swaggerConfig.swagger.description)
.build();
const document = SwaggerModule.createDocument(app, config); const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document); SwaggerModule.setup('api', app, document);
app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
await app.listen(Utility.appPort); await app.listen(Utility.appPort);

View File

@ -1,46 +1,60 @@
import { Table, Column, Model, Default, DataType } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({ tableName: 'offers_redemption' , paranoid : true}) @Table({ tableName: 'offers_redemption', paranoid: true })
export default class OfferRedemption extends Model { export default class OfferRedemption extends Model {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
user_id: number; user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
offer_id: number; offer_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
payment_id: number; payment_id: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
redemption_date: Date; redemption_date: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validTill: Date; validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
createdAt: Date; createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
updatedAt: Date; updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
createdBy: string; createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
modifiedBy: string; modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
deletedAt: Date; deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
version: number; version: number;
} }

View File

@ -1,43 +1,56 @@
import { Table, Column, Model, Default, DataType, Unique } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType, Unique } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({ tableName: 'offers' , paranoid : true}) @Table({ tableName: 'offers', paranoid: true })
export default class Offer extends Model { export default class Offer extends Model {
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
code: string; code: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
description: string; description: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
discount_value: number; discount_value: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validTill: Date; validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
createdAt: Date; createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
updatedAt: Date; updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
createdBy: string; createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
modifiedBy: string; modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
deletedAt: Date; deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
version: number; version: number;
} }

View File

@ -1,58 +1,76 @@
import { Table, Column, Model, Default, DataType } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({ tableName: 'payment' , paranoid : true}) @Table({ tableName: 'payment', paranoid: true })
export default class Payment extends Model { export default class Payment extends Model {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
user_id: number; user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
amount: number; amount: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
payment_date: Date; payment_date: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
method: string; method: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
payment_signature: string; payment_signature: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
from_account: string; from_account: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
to_account: string; to_account: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
remaining_amount: number; remaining_amount: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validTill: Date; validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
createdAt: Date; createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
updatedAt: Date; updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
createdBy: string; createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
modifiedBy: string; modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
deletedAt: Date; deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
version: number; version: number;
} }

View File

@ -1,46 +1,60 @@
import { Table, Column, Model, Default, DataType } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({ tableName: 'plan_usage' , paranoid : true}) @Table({ tableName: 'plan_usage', paranoid: true })
export default class PlanUsage extends Model { export default class PlanUsage extends Model {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
user_id: number; user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT) @Column(DataType.BIGINT)
plan_id: number; plan_id: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
usage_type: string; usage_type: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
usage_quantity: Date; usage_quantity: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validTill: Date; validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
createdAt: Date; createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
updatedAt: Date; updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
createdBy: string; createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
modifiedBy: string; modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
deletedAt: Date; deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
version: number; version: number;
} }

View File

@ -1,46 +1,60 @@
import { Table, Column, Model, Default, DataType } from 'sequelize-typescript'; import { Table, Column, Model, Default, DataType } from 'sequelize-typescript';
import { ApiProperty } from '@nestjs/swagger';
@Table({ tableName: 'plans_ref' , paranoid : true}) @Table({ tableName: 'plans_ref', paranoid: true })
export default class Plan extends Model { export default class Plan extends Model {
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
name: string; name: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
price: number; price: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
duration: Date; duration: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
description: string; description: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
status: string; status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date()) @Default(new Date())
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validFrom: Date; validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31")) @Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
validTill: Date; validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
createdAt: Date; createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
updatedAt: Date; updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
createdBy: string; createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT) @Column(DataType.TEXT)
modifiedBy: string; modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY) @Column(DataType.DATEONLY)
deletedAt: Date; deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER) @Column(DataType.NUMBER)
version: number; version: number;
} }