chore: seeder for city and province
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
import { Logger } from "@nestjs/common";
|
import { Logger } from "@nestjs/common";
|
||||||
|
|
||||||
import { connectionSource } from "./connection";
|
import { connectionSource } from "./connection";
|
||||||
import { seedAdmin } from "./seeders/admin.seeder";
|
// import { seedAdmin } from "./seeders/admin.seeder";
|
||||||
import { seedNotifSettings } from "./seeders/notif-setting.seeder";
|
import { seedCityAndProvince } from "./seeders/iran-city.seeder";
|
||||||
import { seedPaymentGateways } from "./seeders/payment-gateway.seeder";
|
// import { seedNotifSettings } from "./seeders/notif-setting.seeder";
|
||||||
import { seedRole } from "./seeders/role.seeder";
|
// import { seedPaymentGateways } from "./seeders/payment-gateway.seeder";
|
||||||
|
// import { seedRole } from "./seeders/role.seeder";
|
||||||
|
|
||||||
const logger = new Logger("Seeder");
|
const logger = new Logger("Seeder");
|
||||||
|
|
||||||
@@ -12,10 +13,11 @@ export const runSeeder = async () => {
|
|||||||
await connectionSource.initialize();
|
await connectionSource.initialize();
|
||||||
logger.log("start seeding database");
|
logger.log("start seeding database");
|
||||||
//
|
//
|
||||||
await seedRole(connectionSource, logger);
|
// await seedRole(connectionSource, logger);
|
||||||
await seedAdmin(connectionSource, logger);
|
// await seedAdmin(connectionSource, logger);
|
||||||
await seedNotifSettings(connectionSource, logger);
|
// await seedNotifSettings(connectionSource, logger);
|
||||||
await seedPaymentGateways(connectionSource, logger);
|
// await seedPaymentGateways(connectionSource, logger);
|
||||||
|
await seedCityAndProvince(connectionSource, logger);
|
||||||
|
|
||||||
logger.log("seeding completed");
|
logger.log("seeding completed");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import { Logger } from "@nestjs/common";
|
||||||
|
import { DataSource } from "typeorm";
|
||||||
|
|
||||||
|
import { City } from "../../src/modules/address/entities/city.entity";
|
||||||
|
import { Province } from "../../src/modules/address/entities/province.entity";
|
||||||
|
import provincesData from "../data/json/ostan.json";
|
||||||
|
import citiesData from "../data/json/shahr.json";
|
||||||
|
|
||||||
|
export const seedCityAndProvince = async (dataSource: DataSource, logger: Logger) => {
|
||||||
|
try {
|
||||||
|
const provinceRepo = dataSource.getRepository(Province);
|
||||||
|
const cityRepo = dataSource.getRepository(City);
|
||||||
|
|
||||||
|
for (const province of provincesData) {
|
||||||
|
const newProvince = provinceRepo.create({ name: province.name });
|
||||||
|
await provinceRepo.save(newProvince);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const city of citiesData) {
|
||||||
|
const province = await provinceRepo.findOne({ where: { id: city.ostan } });
|
||||||
|
if (province) {
|
||||||
|
const newCity = cityRepo.create({ name: city.name, province });
|
||||||
|
await cityRepo.save(newCity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log("City and Province seeding completed");
|
||||||
|
} catch (error) {
|
||||||
|
logger.error("Error in seeding City and Province", error);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -14,6 +14,7 @@ import { mailerConfig } from "./configs/mailer.config";
|
|||||||
import { rateLimitConfig } from "./configs/rateLimit.config";
|
import { rateLimitConfig } from "./configs/rateLimit.config";
|
||||||
import { databaseConfigs } from "./configs/typeorm.config";
|
import { databaseConfigs } from "./configs/typeorm.config";
|
||||||
import { HTTPLogger } from "./core/middlewares/logger.middleware";
|
import { HTTPLogger } from "./core/middlewares/logger.middleware";
|
||||||
|
import { AddressModule } from "./modules/address/address.module";
|
||||||
import { AdsModule } from "./modules/ads/ads.module";
|
import { AdsModule } from "./modules/ads/ads.module";
|
||||||
import { AnnouncementsModule } from "./modules/announcements/announcement.module";
|
import { AnnouncementsModule } from "./modules/announcements/announcement.module";
|
||||||
import { AuthModule } from "./modules/auth/auth.module";
|
import { AuthModule } from "./modules/auth/auth.module";
|
||||||
@@ -59,6 +60,7 @@ import { WalletsModule } from "./modules/wallets/wallets.module";
|
|||||||
LearningModule,
|
LearningModule,
|
||||||
DiscountModule,
|
DiscountModule,
|
||||||
AdsModule,
|
AdsModule,
|
||||||
|
AddressModule,
|
||||||
],
|
],
|
||||||
controllers: [],
|
controllers: [],
|
||||||
providers: [],
|
providers: [],
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { Controller } from "@nestjs/common";
|
||||||
|
|
||||||
|
@Controller("address")
|
||||||
|
export class AddressController {
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import { Module } from "@nestjs/common";
|
||||||
|
import { TypeOrmModule } from "@nestjs/typeorm";
|
||||||
|
|
||||||
|
import { AddressController } from "./address.controller";
|
||||||
|
import { City } from "./entities/city.entity";
|
||||||
|
import { Province } from "./entities/province.entity";
|
||||||
|
import { AddressService } from "./providers/address.service";
|
||||||
|
import { CityRepository } from "./repositories/city.repository";
|
||||||
|
import { ProvinceRepository } from "./repositories/province.repository";
|
||||||
|
|
||||||
|
@Module({
|
||||||
|
imports: [TypeOrmModule.forFeature([City, Province])],
|
||||||
|
providers: [AddressService, CityRepository, ProvinceRepository],
|
||||||
|
controllers: [AddressController],
|
||||||
|
})
|
||||||
|
export class AddressModule {}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
|
||||||
|
|
||||||
|
import { Province } from "./province.entity";
|
||||||
|
|
||||||
|
@Entity()
|
||||||
|
export class City {
|
||||||
|
@PrimaryGeneratedColumn()
|
||||||
|
id: number;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => Province, (province) => province.cities, { nullable: false })
|
||||||
|
province: Province;
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
|
|
||||||
|
import { City } from "./city.entity";
|
||||||
|
|
||||||
|
@Entity()
|
||||||
|
export class Province {
|
||||||
|
@PrimaryGeneratedColumn()
|
||||||
|
id: number;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@OneToMany(() => City, (city) => city.province)
|
||||||
|
cities: City[];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AddressService {
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
import { InjectRepository } from "@nestjs/typeorm";
|
||||||
|
import { Repository } from "typeorm";
|
||||||
|
|
||||||
|
import { City } from "../entities/city.entity";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class CityRepository extends Repository<City> {
|
||||||
|
constructor(@InjectRepository(City) cityRepository: Repository<City>) {
|
||||||
|
super(cityRepository.target, cityRepository.manager, cityRepository.queryRunner);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
import { InjectRepository } from "@nestjs/typeorm";
|
||||||
|
import { Repository } from "typeorm";
|
||||||
|
|
||||||
|
import { Province } from "../entities/province.entity";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ProvinceRepository extends Repository<Province> {
|
||||||
|
constructor(@InjectRepository(Province) provinceRepository: Repository<Province>) {
|
||||||
|
super(provinceRepository.target, provinceRepository.manager, provinceRepository.queryRunner);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Body, Controller, Get, Param, Post, Query } from "@nestjs/common";
|
import { Body, Controller, Get, Param, Post, Query } from "@nestjs/common";
|
||||||
import { ApiOperation } from "@nestjs/swagger";
|
import { ApiOperation } from "@nestjs/swagger";
|
||||||
|
|
||||||
|
import { ApplyDiscountDto } from "./DTO/apply-discount-invoice.dto";
|
||||||
import { CreateInvoiceDto } from "./DTO/create-invoice.dto";
|
import { CreateInvoiceDto } from "./DTO/create-invoice.dto";
|
||||||
import { InvoicesSearchQueryDto, UserInvoicesSearchQueryDto } from "./DTO/invoices-search-query.dto";
|
import { InvoicesSearchQueryDto, UserInvoicesSearchQueryDto } from "./DTO/invoices-search-query.dto";
|
||||||
import { InvoicesService } from "./providers/invoices.service";
|
import { InvoicesService } from "./providers/invoices.service";
|
||||||
@@ -48,4 +49,14 @@ export class InvoicesController {
|
|||||||
getInvoiceById(@Param() paramDto: ParamDto, @UserDec("role") role: RoleEnum, @UserDec("id") userId: string) {
|
getInvoiceById(@Param() paramDto: ParamDto, @UserDec("role") role: RoleEnum, @UserDec("id") userId: string) {
|
||||||
return this.invoiceService.getInvoiceById(paramDto.id, role, userId);
|
return this.invoiceService.getInvoiceById(paramDto.id, role, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Post(":id/apply-discount")
|
||||||
|
async applyDiscount(@Param() paramDto: ParamDto, @Body() applyDiscountDto: ApplyDiscountDto) {
|
||||||
|
return this.invoiceService.applyDiscount(paramDto.id, applyDiscountDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Get(":id/final-price")
|
||||||
|
async getFinalPrice(@Param() paramDto: ParamDto) {
|
||||||
|
return this.invoiceService.calculateFinalPrice(paramDto.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user