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() {
return configMaster[this.defaultEnv].mailConfig;
}
getSwaggerConfig() {
return configMaster[this.defaultEnv].swaggerConfig;
}
}

View File

@ -29,6 +29,13 @@
"defaults": {
"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": {
"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();
this.commonService.mailConfig = emailConfig;
Utility.mailConfig = emailConfig;
const swaggerConfig = this.configService.getSwaggerConfig();
this.commonService.swaggerConfig = swaggerConfig;
Utility.swaggerConfig = swaggerConfig;
}
getModels() {

View File

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

View File

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

View File

@ -1,29 +1,36 @@
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 {
@ApiProperty({ type: Number })
@Column({type: DataType.NUMBER})
endPtNm: number;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT})
sqlQueryText: string;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT})
opsTypeName: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column({type: DataType.DATEONLY})
validFrom: Date;
@ApiProperty({ type: Date, default: new Date('2070-12-31') })
@Default(new Date("2070-12-31"))
@Column({type: DataType.DATEONLY})
validTill: Date;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT})
createBy: string;
@ApiProperty({ type: String })
@Column({type: DataType.TEXT})
modifiedBy: string;
}

View File

@ -1,60 +1,78 @@
import { Table, Column, Model, Default, DataType, ForeignKey } from 'sequelize-typescript';
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 {
@ApiProperty({ type: Number })
@Column({ type: DataType.BIGINT, allowNull: false })
user_id: number;
@ApiProperty({ type: Number })
@ForeignKey(() => Payment)
@Column({ type: DataType.BIGINT, allowNull: false, field: 'payment_id' })
payment_id: number;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'invoice_number' })
invoice_number: string;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'amount' })
amount: number;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'remaining_balance' })
remaining_balance: number;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'tax' })
tax: number;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'issue_date' })
issue_date: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'due_date' })
due_date: Date;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'status' })
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column({ type: DataType.DATEONLY, field: 'validFrom' })
valid_from: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column({ type: DataType.DATEONLY, field: 'validTill' })
valid_till: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'createdAt' })
created_at: Date;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'updatedAt' })
updated_at: Date;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'createdBy' })
created_by: string;
@ApiProperty({ type: String })
@Column({ type: DataType.TEXT, field: 'modifiedBy' })
modified_by: string;
@ApiProperty({ type: Date })
@Column({ type: DataType.DATEONLY, field: 'deletedAt' })
deleted_at: Date;
@ApiProperty({ type: Number })
@Column({ type: DataType.NUMBER, field: 'version' })
version: number;

View File

@ -9,10 +9,19 @@ async function bootstrap() {
Utility.appPort = configMaster.local.appConfig.port;
Utility.mailConfig = configMaster.local.mailConfig;
Utility.fileConfig = configMaster.local.fileConfig;
Utility.swaggerConfig = configMaster.local.swaggerConfig;
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);
SwaggerModule.setup('api', app, document);
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
await app.listen(Utility.appPort);

View File

@ -1,46 +1,60 @@
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 {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
offer_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
payment_id: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
redemption_date: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column(DataType.DATEONLY)
validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY)
validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
version: number;
}

View File

@ -1,43 +1,56 @@
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 {
@ApiProperty({ type: String })
@Column(DataType.TEXT)
code: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
description: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
discount_value: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column(DataType.DATEONLY)
validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY)
validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
version: number;
}

View File

@ -1,58 +1,76 @@
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 {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
amount: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
payment_date: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
method: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
payment_signature: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
from_account: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
to_account: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
remaining_amount: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column(DataType.DATEONLY)
validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY)
validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
version: number;
}

View File

@ -1,46 +1,60 @@
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 {
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
user_id: number;
@ApiProperty({ type: Number })
@Column(DataType.BIGINT)
plan_id: number;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
usage_type: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
usage_quantity: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column(DataType.DATEONLY)
validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY)
validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
version: number;
}

View File

@ -1,46 +1,60 @@
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 {
@ApiProperty({ type: String })
@Column(DataType.TEXT)
name: string;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
price: number;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
duration: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
description: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
status: string;
@ApiProperty({ type: Date, default: new Date() })
@Default(new Date())
@Column(DataType.DATEONLY)
validFrom: Date;
@ApiProperty({ type: Date, default: new Date("2070-12-31") })
@Default(new Date("2070-12-31"))
@Column(DataType.DATEONLY)
validTill: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
createdAt: Date;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
updatedAt: Date;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
createdBy: string;
@ApiProperty({ type: String })
@Column(DataType.TEXT)
modifiedBy: string;
@ApiProperty({ type: Date })
@Column(DataType.DATEONLY)
deletedAt: Date;
@ApiProperty({ type: Number })
@Column(DataType.NUMBER)
version: number;
}