Estructuración y creación de interfaces

This commit is contained in:
2025-03-31 17:08:28 +02:00
parent 1953fae9db
commit 3c8dac059f
5 changed files with 49 additions and 5 deletions

View File

@@ -4,7 +4,7 @@ import { ApiService } from '../../services/api.service';
import { Gender } from '../../interfaces/gender'; import { Gender } from '../../interfaces/gender';
import { provideIcons, NgIcon } from '@ng-icons/core'; import { provideIcons, NgIcon } from '@ng-icons/core';
import { bootstrapArrowRepeat, bootstrapFileEarmarkPlus, bootstrapArrowDown, bootstrapArrowUp, bootstrapCaretLeftFill, bootstrapCaretRightFill } from '@ng-icons/bootstrap-icons'; import { bootstrapArrowRepeat, bootstrapFileEarmarkPlus, bootstrapArrowDown, bootstrapArrowUp, bootstrapCaretLeftFill, bootstrapCaretRightFill } from '@ng-icons/bootstrap-icons';
import { Page } from '../../interfaces/page'; import { ResponseGenders } from '../../interfaces/responseGenders';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
@Component({ @Component({
@@ -17,7 +17,7 @@ import { FormsModule } from '@angular/forms';
export class TableGendersComponent { export class TableGendersComponent {
genders: Gender[] = []; genders: Gender[] = [];
consultaActual: Page = {} as Page; consultaActual: ResponseGenders = {} as ResponseGenders;
paginaActual: number = 1; paginaActual: number = 1;
paginas: number[] = []; paginas: number[] = [];
generoEditando: Gender = {} as Gender; generoEditando: Gender = {} as Gender;

View File

@@ -0,0 +1,12 @@
import { Gender } from "./gender";
export interface Book {
id: number;
titulo: string;
autor: string;
genero: Gender;
}
export class Book {
constructor(public id: number, public titulo: string, public autor: string, public genero: Gender) {}
}

View File

@@ -0,0 +1,30 @@
import { Book } from "./book";
export interface ResponseBooks {
content: Book[];
pageable: {
sort: {
empty: boolean;
sorted: boolean;
unsorted: boolean;
},
offset: number,
pageNumber: number,
pageSize: number,
paged: boolean,
unpaged: boolean
},
totalPages: number,
totalElements: number,
last: boolean,
size: number,
number: number,
sort: {
empty: boolean;
sorted: boolean;
unsorted: boolean;
},
numberOfElements: number,
first: boolean,
empty: boolean
}

View File

@@ -1,6 +1,6 @@
import { Gender } from "./gender"; import { Gender } from "./gender";
export interface Page { export interface ResponseGenders {
content: Gender[]; content: Gender[];
pageable: { pageable: {
sort: { sort: {

View File

@@ -1,6 +1,8 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Gender } from '../interfaces/gender'; import { Gender } from '../interfaces/gender';
import { Page } from '../interfaces/page'; import { ResponseGenders } from '../interfaces/responseGenders';
import { ResponseBooks } from '../interfaces/responseBooks';
import { Book } from '../interfaces/book';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
@@ -10,7 +12,7 @@ export class ApiService {
async getGenders(page: number = 0, size: number = 10, fieldOrder: 'id' | 'nombre' | null = null, orderType: 'asc' | 'desc' = 'asc', textoFiltro: string = '') { async getGenders(page: number = 0, size: number = 10, fieldOrder: 'id' | 'nombre' | null = null, orderType: 'asc' | 'desc' = 'asc', textoFiltro: string = '') {
const listaGeneros: Gender[] = []; const listaGeneros: Gender[] = [];
let respuesta: Page = {} as Page; let respuesta: ResponseGenders = {} as ResponseGenders;
await fetch(`${this.apiUrl}/genders?page=${page}&size=${size}${fieldOrder ? '&fieldOrder=' + fieldOrder : ''}&orderType=${orderType}&nombre=${textoFiltro}`) await fetch(`${this.apiUrl}/genders?page=${page}&size=${size}${fieldOrder ? '&fieldOrder=' + fieldOrder : ''}&orderType=${orderType}&nombre=${textoFiltro}`)
.then(response => response.json()) .then(response => response.json())