From 3d3c45e048a6dd560cbd03d0228b836ff7c74726 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Fri, 31 May 2024 00:00:07 +0200 Subject: [PATCH] feat: proof of concept single restaurant comopnent --- .../app/restauracja/restauracja.controller.ts | 1 + monorepo/apps/backend/src/main.ts | 1 + monorepo/apps/frontend/src/app/app.routes.ts | 5 +- .../restauracja/restauracja.component.html | 24 +++++++- .../app/restauracja/restauracja.component.ts | 58 ++++++++++++++++++- 5 files changed, 85 insertions(+), 4 deletions(-) diff --git a/monorepo/apps/backend/src/app/restauracja/restauracja.controller.ts b/monorepo/apps/backend/src/app/restauracja/restauracja.controller.ts index 7ed27105..de5c068c 100644 --- a/monorepo/apps/backend/src/app/restauracja/restauracja.controller.ts +++ b/monorepo/apps/backend/src/app/restauracja/restauracja.controller.ts @@ -9,6 +9,7 @@ export class RestauracjaController { @Get() async findAll(): Promise { + console.log(`restauracja all`); return this.restauracjaService.findAll(); } diff --git a/monorepo/apps/backend/src/main.ts b/monorepo/apps/backend/src/main.ts index a124382d..41241d87 100644 --- a/monorepo/apps/backend/src/main.ts +++ b/monorepo/apps/backend/src/main.ts @@ -10,6 +10,7 @@ import { AppModule } from './app/app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); + app.enableCors(); const globalPrefix = 'api'; app.setGlobalPrefix(globalPrefix); const port = process.env.PORT || 3000; diff --git a/monorepo/apps/frontend/src/app/app.routes.ts b/monorepo/apps/frontend/src/app/app.routes.ts index 8762dfe2..f3ef99c1 100644 --- a/monorepo/apps/frontend/src/app/app.routes.ts +++ b/monorepo/apps/frontend/src/app/app.routes.ts @@ -1,3 +1,6 @@ import { Route } from '@angular/router'; +import { RestauracjaComponent } from './restauracja/restauracja.component'; -export const appRoutes: Route[] = []; +export const appRoutes: Route[] = [ + {path: 'restauracja', component: RestauracjaComponent} +]; diff --git a/monorepo/apps/frontend/src/app/restauracja/restauracja.component.html b/monorepo/apps/frontend/src/app/restauracja/restauracja.component.html index 4d7fa39c..135b364b 100644 --- a/monorepo/apps/frontend/src/app/restauracja/restauracja.component.html +++ b/monorepo/apps/frontend/src/app/restauracja/restauracja.component.html @@ -1 +1,23 @@ -

restauracja works!

+ +
+

Restauracja List

+
    +
  • + {{ restauracja.adres }} + + +
  • +
+ +

Create Restauracja

+ + + +
+

Edit Restauracja

+ + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/restauracja/restauracja.component.ts b/monorepo/apps/frontend/src/app/restauracja/restauracja.component.ts index 8769de41..883bfe52 100644 --- a/monorepo/apps/frontend/src/app/restauracja/restauracja.component.ts +++ b/monorepo/apps/frontend/src/app/restauracja/restauracja.component.ts @@ -1,11 +1,65 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; + +interface Restauracja { + id?: number; + adres: string; +} @Component({ selector: 'app-restauracja', standalone: true, - imports: [CommonModule], + imports: [CommonModule, FormsModule, HttpClientModule], templateUrl: './restauracja.component.html', styleUrl: './restauracja.component.css', }) -export class RestauracjaComponent {} +export class RestauracjaComponent { + restauracje: Restauracja[] = []; + newRestauracja: Restauracja = { adres: '' }; + editRestauracja: Restauracja | null = null; + private apiUrl = 'http://localhost:3000/api/restauracja'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadRestauracje(); + } + + loadRestauracje(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.restauracje = data; + }); + } + + createRestauracja(): void { + this.http.post(this.apiUrl, this.newRestauracja).subscribe(data => { + this.restauracje.push(data); + this.newRestauracja = { adres: '' }; + }); + } + + updateRestauracja(): void { + if (this.editRestauracja && this.editRestauracja.id) { + this.http.put(`${this.apiUrl}/${this.editRestauracja.id}`, this.editRestauracja).subscribe(data => { + this.loadRestauracje(); + this.editRestauracja = null; + }); + } + } + + deleteRestauracja(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.restauracje = this.restauracje.filter(r => r.id !== id); + }); + } + + startEdit(restauracja: Restauracja): void { + this.editRestauracja = { ...restauracja }; + } + + cancelEdit(): void { + this.editRestauracja = null; + } +}