diff --git a/apps/web/src/app/app.routes.ts b/apps/web/src/app/app.routes.ts index 8917eba..b698228 100644 --- a/apps/web/src/app/app.routes.ts +++ b/apps/web/src/app/app.routes.ts @@ -16,6 +16,11 @@ export const appRoutes: Route[] = [ loadChildren: () => import('./modules/user/user.module').then((m) => m.UserModule), }, + { + path: 'post', + loadChildren: () => + import('./modules/post/post.module').then((m) => m.PostModule) + } ], }, ]; diff --git a/apps/web/src/app/core/interfaces/like.interface.ts b/apps/web/src/app/core/interfaces/like.interface.ts new file mode 100644 index 0000000..f3ca994 --- /dev/null +++ b/apps/web/src/app/core/interfaces/like.interface.ts @@ -0,0 +1,9 @@ +import { Post } from "./post.interface"; +import { User } from "./user.interface"; + +export interface Like { + id: string; + user: User; + post: Post; + createdAt?: Date; +} diff --git a/apps/web/src/app/core/interfaces/loginResponse.interface.ts b/apps/web/src/app/core/interfaces/loginResponse.interface.ts new file mode 100644 index 0000000..1ed91e8 --- /dev/null +++ b/apps/web/src/app/core/interfaces/loginResponse.interface.ts @@ -0,0 +1,7 @@ +import { User } from "./user.interface"; + +export interface LoginResponse { + accessToken: string; + refreshToken: string; + user: User; +} diff --git a/apps/web/src/app/core/interfaces/post.interface.ts b/apps/web/src/app/core/interfaces/post.interface.ts new file mode 100644 index 0000000..c4fc241 --- /dev/null +++ b/apps/web/src/app/core/interfaces/post.interface.ts @@ -0,0 +1,16 @@ +import { Like } from "./like.interface"; +import { Topic } from "./topic.interface"; +import { User } from "./user.interface"; + +export interface Post { + id: string; + title: string; + content: string; + published: boolean; + author?: User; + topics?: Topic[]; + like?: Like; + likes?: Like[]; + createdAt?: Date; + updatedAt?: Date; +} diff --git a/apps/web/src/app/core/interfaces/refreshToken.interface.ts b/apps/web/src/app/core/interfaces/refreshToken.interface.ts new file mode 100644 index 0000000..49f2dd9 --- /dev/null +++ b/apps/web/src/app/core/interfaces/refreshToken.interface.ts @@ -0,0 +1,4 @@ +export interface RefreshTokenResponse { + accessToken: string; + refreshToken: string; +} diff --git a/apps/web/src/app/core/interfaces/registerResponse.interface.ts b/apps/web/src/app/core/interfaces/registerResponse.interface.ts new file mode 100644 index 0000000..e2cfddd --- /dev/null +++ b/apps/web/src/app/core/interfaces/registerResponse.interface.ts @@ -0,0 +1,7 @@ +export interface RegisterResponse { + id: string; + email: string; + name: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/apps/web/src/app/core/interfaces/topic.interface.ts b/apps/web/src/app/core/interfaces/topic.interface.ts new file mode 100644 index 0000000..f424fc4 --- /dev/null +++ b/apps/web/src/app/core/interfaces/topic.interface.ts @@ -0,0 +1,10 @@ +import { Post } from "./post.interface"; + +export interface Topic { + id: string; + label: string; + posts?: Post[]; + selected?: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/apps/web/src/app/core/interfaces/user.interface.ts b/apps/web/src/app/core/interfaces/user.interface.ts new file mode 100644 index 0000000..f55f6b0 --- /dev/null +++ b/apps/web/src/app/core/interfaces/user.interface.ts @@ -0,0 +1,5 @@ +export interface User { + id: string; + email: string; + name: string; +} diff --git a/apps/web/src/app/core/services/auth/auth.service.ts b/apps/web/src/app/core/services/auth/auth.service.ts index a7d5700..68f4113 100644 --- a/apps/web/src/app/core/services/auth/auth.service.ts +++ b/apps/web/src/app/core/services/auth/auth.service.ts @@ -1,6 +1,10 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { environment } from '@web/environments/environment'; +import { LoginResponse } from '../../interfaces/loginResponse.interface'; +import { RefreshTokenResponse } from '../../interfaces/refreshToken.interface'; +import { RegisterResponse } from '../../interfaces/registerResponse.interface'; +import { User } from '../../interfaces/user.interface'; @Injectable({ providedIn: 'root' }) export class AuthService { @@ -72,28 +76,3 @@ export class AuthService { localStorage.removeItem('refreshToken'); } } - -export interface User { - id: string; - email: string; - name: string; -} - -export interface RefreshTokenResponse { - accessToken: string; - refreshToken: string; -} - -export interface LoginResponse { - accessToken: string; - refreshToken: string; - user: User; -} - -export interface RegisterResponse { - id: string; - email: string; - name: string; - createdAt: Date; - updatedAt: Date; -} diff --git a/apps/web/src/app/core/services/post/post.service.ts b/apps/web/src/app/core/services/post/post.service.ts index b1970f6..3c81efb 100644 --- a/apps/web/src/app/core/services/post/post.service.ts +++ b/apps/web/src/app/core/services/post/post.service.ts @@ -1,13 +1,14 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Topic, User } from '@web/app/core/services'; import { environment } from '@web/environments/environment'; +import { Post } from '../../interfaces/post.interface'; +import { Like } from '../../interfaces/like.interface'; @Injectable({ providedIn: 'root' }) export class PostService { private readonly apiUrl = environment.apiUrl; - constructor(private readonly httpClient: HttpClient) {} + constructor(private readonly _httpClient: HttpClient) {} public getPosts( search: { @@ -20,34 +21,31 @@ export class PostService { let params: any = { skip: search.skip, take: search.take }; if (search.keywords) params = { ...params, keywords: search.keywords }; if (search.topics) params = { ...params, topics: search.topics }; - return this.httpClient.get(`${this.apiUrl}/post`, { params }); + return this._httpClient.get(`${this.apiUrl}/post`, { params }); + } + + public getPostById(id: string) { + return this._httpClient.get(`${this.apiUrl}/post/${id}`); } public like(post: { id: string }) { - return this.httpClient.post(`${this.apiUrl}/like`, { post }); + return this._httpClient.post(`${this.apiUrl}/like`, { post }); } public unlike(likeId: string) { - return this.httpClient.delete(`${this.apiUrl}/like/${likeId}`); + return this._httpClient.delete(`${this.apiUrl}/like/${likeId}`); } -} -export interface Post { - id: string; - title: string; - content: string; - published: boolean; - author?: User; - topics?: Topic[]; - like?: Like; - likes?: Like[]; - createdAt?: Date; - updatedAt?: Date; -} + public createPost(post : Post){ + return this._httpClient.post(`${this.apiUrl}/post`, post) + } -export interface Like { - id: string; - user: User; - post: Post; - createdAt?: Date; + public deletePost(postId: string){ + return this._httpClient.delete(`${this.apiUrl}/post/${postId}`) + } + + public editPost(postId:string, post: Post){ + return this._httpClient.put(`${this.apiUrl}/post/${postId}`, post) + } } + diff --git a/apps/web/src/app/core/services/topic/topic.service.ts b/apps/web/src/app/core/services/topic/topic.service.ts index 2edb2dc..27d9210 100644 --- a/apps/web/src/app/core/services/topic/topic.service.ts +++ b/apps/web/src/app/core/services/topic/topic.service.ts @@ -1,7 +1,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Post } from '@web/app/core/services'; import { environment } from '@web/environments/environment'; +import { Topic } from '../../interfaces/topic.interface'; @Injectable({ providedIn: 'root' }) export class TopicService { @@ -13,12 +13,3 @@ export class TopicService { return this.httpClient.get(`${this.apiUrl}/topic`); } } - -export interface Topic { - id: string; - label: string; - posts?: Post[]; - selected?: boolean; - createdAt: Date; - updatedAt: Date; -} diff --git a/apps/web/src/app/modules/home/components/post/post.component.html b/apps/web/src/app/modules/home/components/post/post.component.html index 756ba6a..c873f29 100644 --- a/apps/web/src/app/modules/home/components/post/post.component.html +++ b/apps/web/src/app/modules/home/components/post/post.component.html @@ -1,4 +1,4 @@ - +
-

{{ data.title }}

+

{{ data.title }}