Initial
This commit is contained in:
71
listify-client/src/app/templates/templates.service.ts
Normal file
71
listify-client/src/app/templates/templates.service.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable, inject } from '@angular/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import {
|
||||
AddListTemplateItemRequest,
|
||||
CreateListFromTemplateRequest,
|
||||
CreateListTemplateRequest,
|
||||
ListTemplate,
|
||||
ReorderListTemplateItemsRequest,
|
||||
UpdateListTemplateRequest,
|
||||
UserList,
|
||||
} from './templates.models';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class TemplatesService {
|
||||
private readonly http = inject(HttpClient);
|
||||
private readonly apiUrl = '/api/list-templates';
|
||||
|
||||
listTemplates(): Observable<ListTemplate[]> {
|
||||
return this.http.get<ListTemplate[]>(this.apiUrl);
|
||||
}
|
||||
|
||||
getTemplate(templateId: string): Observable<ListTemplate> {
|
||||
return this.http.get<ListTemplate>(`${this.apiUrl}/${templateId}`);
|
||||
}
|
||||
|
||||
createTemplate(data: CreateListTemplateRequest): Observable<ListTemplate> {
|
||||
return this.http.post<ListTemplate>(this.apiUrl, data);
|
||||
}
|
||||
|
||||
updateTemplate(
|
||||
templateId: string,
|
||||
data: UpdateListTemplateRequest,
|
||||
): Observable<ListTemplate> {
|
||||
return this.http.patch<ListTemplate>(`${this.apiUrl}/${templateId}`, data);
|
||||
}
|
||||
|
||||
deleteTemplate(templateId: string): Observable<{ message: string }> {
|
||||
return this.http.delete<{ message: string }>(`${this.apiUrl}/${templateId}`);
|
||||
}
|
||||
|
||||
createListFromTemplate(
|
||||
templateId: string,
|
||||
data: CreateListFromTemplateRequest = {},
|
||||
): Observable<UserList> {
|
||||
return this.http.post<UserList>(`${this.apiUrl}/${templateId}/lists`, data);
|
||||
}
|
||||
|
||||
addItem(
|
||||
templateId: string,
|
||||
data: AddListTemplateItemRequest,
|
||||
): Observable<ListTemplate> {
|
||||
return this.http.post<ListTemplate>(`${this.apiUrl}/${templateId}/items`, data);
|
||||
}
|
||||
|
||||
deleteItem(templateId: string, itemId: string): Observable<ListTemplate> {
|
||||
return this.http.delete<ListTemplate>(
|
||||
`${this.apiUrl}/${templateId}/items/${itemId}`,
|
||||
);
|
||||
}
|
||||
|
||||
reorderItems(
|
||||
templateId: string,
|
||||
data: ReorderListTemplateItemsRequest,
|
||||
): Observable<ListTemplate> {
|
||||
return this.http.patch<ListTemplate>(
|
||||
`${this.apiUrl}/${templateId}/items/order`,
|
||||
data,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user