Skip to content

Commit 8fe9a58

Browse files
dockerizing the App
1 parent dc3b3c6 commit 8fe9a58

15 files changed

+247
-1
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LABEL authors="Zo Ambinintsoa"
66
WORKDIR /app
77

88
# Copy the package.json and package-lock.json files to the container
9-
COPY package*.json ./
9+
COPY package.json ./
1010

1111

1212
# Install the app's dependencies

src/app.module.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import { DocumentCategoryModule } from './module/document-category/document-cate
1515
import { DocumentCategory } from './module/document-category/entities/document-category.entity';
1616
import { DocumentMetadataModule } from './module/document-metadata/document-metadata.module';
1717
import { DocumentMetadatum } from './module/document-metadata/entities/document-metadatum.entity';
18+
import { LogementModule } from './module/logement/logement.module';
19+
import { AppartementModule } from './module/appartement/appartement.module';
1820

1921
@Module({
2022
imports: [
@@ -45,6 +47,8 @@ import { DocumentMetadatum } from './module/document-metadata/entities/document-
4547
ExtractedDataModule,
4648
DocumentCategoryModule,
4749
DocumentMetadataModule,
50+
LogementModule,
51+
AppartementModule,
4852
],
4953
controllers: [AppController],
5054
providers: [AppService],
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
2+
import { AppartementService } from './appartement.service';
3+
import { CreateAppartementDto } from './dto/create-appartement.dto';
4+
import { UpdateAppartementDto } from './dto/update-appartement.dto';
5+
6+
@Controller('appartement')
7+
export class AppartementController {
8+
constructor(private readonly appartementService: AppartementService) {}
9+
10+
@Post()
11+
create(@Body() createAppartementDto: CreateAppartementDto) {
12+
return this.appartementService.create(createAppartementDto);
13+
}
14+
15+
@Get()
16+
findAll() {
17+
return this.appartementService.findAll();
18+
}
19+
20+
@Get(':id')
21+
findOne(@Param('id') id: string) {
22+
return this.appartementService.findOne(+id);
23+
}
24+
25+
@Patch(':id')
26+
update(@Param('id') id: string, @Body() updateAppartementDto: UpdateAppartementDto) {
27+
return this.appartementService.update(+id, updateAppartementDto);
28+
}
29+
30+
@Delete(':id')
31+
remove(@Param('id') id: string) {
32+
return this.appartementService.remove(+id);
33+
}
34+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Module } from '@nestjs/common';
2+
import { AppartementService } from './appartement.service';
3+
import { AppartementController } from './appartement.controller';
4+
import { TypeOrmModule } from '@nestjs/typeorm';
5+
import { DocumentModel } from '../document-model/entities/document-model.entity';
6+
import { User } from '../users/entities/user.entity';
7+
import { Appartement } from './entities/appartement.entity';
8+
import { Logement } from '../logement/entities/logement.entity';
9+
10+
@Module({
11+
imports: [
12+
TypeOrmModule.forFeature([DocumentModel, User, Appartement, Logement]),
13+
],
14+
controllers: [AppartementController],
15+
providers: [AppartementService],
16+
})
17+
export class AppartementModule {}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { CreateAppartementDto } from './dto/create-appartement.dto';
3+
import { UpdateAppartementDto } from './dto/update-appartement.dto';
4+
5+
@Injectable()
6+
export class AppartementService {
7+
create(createAppartementDto: CreateAppartementDto) {
8+
return 'This action adds a new appartement';
9+
}
10+
11+
findAll() {
12+
return `This action returns all appartement`;
13+
}
14+
15+
findOne(id: number) {
16+
return `This action returns a #${id} appartement`;
17+
}
18+
19+
update(id: number, updateAppartementDto: UpdateAppartementDto) {
20+
return `This action updates a #${id} appartement`;
21+
}
22+
23+
remove(id: number) {
24+
return `This action removes a #${id} appartement`;
25+
}
26+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export class CreateAppartementDto {}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { PartialType } from '@nestjs/swagger';
2+
import { CreateAppartementDto } from './create-appartement.dto';
3+
4+
export class UpdateAppartementDto extends PartialType(CreateAppartementDto) {}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {
2+
Entity,
3+
PrimaryGeneratedColumn,
4+
Column,
5+
ManyToOne,
6+
BaseEntity,
7+
} from 'typeorm';
8+
import { Logement } from '../../logement/entities/logement.entity';
9+
10+
@Entity()
11+
export class Appartement extends BaseEntity {
12+
@PrimaryGeneratedColumn()
13+
id: number;
14+
15+
@Column({ type: 'varchar', length: 255, nullable: false })
16+
unitNumber: string; // Unit number or identifier
17+
18+
@Column({ type: 'int', nullable: false })
19+
numberOfBedrooms: number; // Number of bedrooms in the unit
20+
21+
@Column({ type: 'int', nullable: false })
22+
numberOfBathrooms: number; // Number of bathrooms in the unit
23+
24+
@Column({ type: 'float', nullable: false })
25+
squareFootage: number; // Square footage of the unit
26+
27+
@ManyToOne(() => Logement, (logement) => logement.appartements)
28+
property: Logement; // Establish a many-to-one relationship with Logement (Property)
29+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export class CreateLogementDto {}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { PartialType } from '@nestjs/swagger';
2+
import { CreateLogementDto } from './create-logement.dto';
3+
4+
export class UpdateLogementDto extends PartialType(CreateLogementDto) {}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import {
2+
Entity,
3+
PrimaryGeneratedColumn,
4+
Column,
5+
OneToMany,
6+
BaseEntity,
7+
} from 'typeorm';
8+
import { Appartement } from '../../appartement/entities/appartement.entity';
9+
10+
@Entity()
11+
export class Logement extends BaseEntity {
12+
@PrimaryGeneratedColumn()
13+
id: number;
14+
15+
@Column({ type: 'varchar', length: 255, nullable: false })
16+
name: string;
17+
18+
@Column({ type: 'varchar', length: 255, nullable: false })
19+
type: string; // Property type (Apartment, House, Condo, etc.)
20+
21+
@Column({ type: 'text', nullable: false })
22+
address: string; // Address of the property
23+
24+
@Column({ type: 'int', nullable: false })
25+
numberOfUnits: number;
26+
27+
@Column({ type: 'varchar', length: 255, nullable: false })
28+
owner: string; // Property owner or manager
29+
30+
@Column({ type: 'varchar', length: 255, nullable: true })
31+
amenities: string; // Amenities provided (Swimming Pool, Gym, Parking, etc.)
32+
33+
@Column({ type: 'varchar', length: 255, nullable: true })
34+
maintenanceContact: string; // Contact information for property maintenance
35+
36+
@OneToMany(() => Appartement, (appartement) => appartement.property)
37+
appartements: Appartement[]; // Establish a one-to-many relationship with Appartement
38+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
2+
import { LogementService } from './logement.service';
3+
import { CreateLogementDto } from './dto/create-logement.dto';
4+
import { UpdateLogementDto } from './dto/update-logement.dto';
5+
6+
@Controller('logement')
7+
export class LogementController {
8+
constructor(private readonly logementService: LogementService) {}
9+
10+
@Post()
11+
create(@Body() createLogementDto: CreateLogementDto) {
12+
return this.logementService.create(createLogementDto);
13+
}
14+
15+
@Get()
16+
findAll() {
17+
return this.logementService.findAll();
18+
}
19+
20+
@Get(':id')
21+
findOne(@Param('id') id: string) {
22+
return this.logementService.findOne(+id);
23+
}
24+
25+
@Patch(':id')
26+
update(@Param('id') id: string, @Body() updateLogementDto: UpdateLogementDto) {
27+
return this.logementService.update(+id, updateLogementDto);
28+
}
29+
30+
@Delete(':id')
31+
remove(@Param('id') id: string) {
32+
return this.logementService.remove(+id);
33+
}
34+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Module } from '@nestjs/common';
2+
import { LogementService } from './logement.service';
3+
import { LogementController } from './logement.controller';
4+
import { TypeOrmModule } from '@nestjs/typeorm';
5+
import { User } from '../users/entities/user.entity';
6+
import { Appartement } from '../appartement/entities/appartement.entity';
7+
import { Logement } from './entities/logement.entity';
8+
9+
@Module({
10+
imports: [
11+
TypeOrmModule.forFeature([User, Appartement, Logement]),
12+
],
13+
controllers: [LogementController],
14+
providers: [LogementService],
15+
})
16+
export class LogementModule {}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { CreateLogementDto } from './dto/create-logement.dto';
3+
import { UpdateLogementDto } from './dto/update-logement.dto';
4+
5+
@Injectable()
6+
export class LogementService {
7+
create(createLogementDto: CreateLogementDto) {
8+
return 'This action adds a new logement';
9+
}
10+
11+
findAll() {
12+
return `This action returns all logement`;
13+
}
14+
15+
findOne(id: number) {
16+
return `This action returns a #${id} logement`;
17+
}
18+
19+
update(id: number, updateLogementDto: UpdateLogementDto) {
20+
return `This action updates a #${id} logement`;
21+
}
22+
23+
remove(id: number) {
24+
return `This action removes a #${id} logement`;
25+
}
26+
}

src/module/users/controller/auth.controller.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,16 @@ export class AuthController {
100100
throw new UnauthorizedException(error.message);
101101
}
102102
}
103+
104+
@UseGuards(AuthGuard)
105+
@Post('logout')
106+
async logout(@Req() req: Request, @Res() res: Response) {
107+
try {
108+
res.clearCookie('token');
109+
// Send a response indicating successful logout
110+
res.status(200).json({ message: 'Logged out successfully' });
111+
} catch (error) {
112+
res.status(500).json({ message: 'An error occurred while logging out' });
113+
}
114+
}
103115
}

0 commit comments

Comments
 (0)