mantis-app
Version:
M.A.N.T.I.S (MongoDB, Analog, Nx, Tailwind CSS, Ionic, Storybook) is not just a CLI tool; it's your passport to a seamless full-stack project launch.
50 lines (42 loc) • 1.16 kB
text/typescript
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, catchError, of, retry } from 'rxjs';
import { ConfigService } from './config.service';
export interface Todo {
_id: string;
title: string;
completed: boolean;
}
export type CreateTodo = Omit<Todo, '_id'>;
({ providedIn: 'root' })
export class TodosService {
constructor(
private http: HttpClient,
private config: ConfigService,
) {}
getAllTodos(): Observable<Todo[]> {
return this.http
.get<Todo[]>(`${this.config.getBackendBaseUrl()}/todos`)
.pipe(
retry(3),
catchError(() => of([])),
);
}
addTodo(todo: CreateTodo): Observable<Todo> {
return this.http.post<Todo>(
`${this.config.getBackendBaseUrl()}/todos`,
todo,
);
}
updateTodo(todo: Todo): Observable<Todo> {
return this.http.patch<Todo>(
`${this.config.getBackendBaseUrl()}/todos/${todo._id}`,
todo,
);
}
removeTodo(todo: Todo): Observable<void> {
return this.http.delete<void>(
`${this.config.getBackendBaseUrl()}/todos/${todo._id}`,
);
}
}