Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69723d0801 | ||
|
|
9daca90d6b | ||
|
|
846e3e6368 |
12 changed files with 92 additions and 23 deletions
|
|
@ -5,7 +5,11 @@ meta {
|
|||
}
|
||||
|
||||
get {
|
||||
url: {{localBaseUrl}}/{{resourcePath}}
|
||||
url: {{localBaseUrl}}/{{resourcePath}}?sort=desc
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
sort: desc
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,11 @@ meta {
|
|||
}
|
||||
|
||||
get {
|
||||
url: {{localBaseUrl}}/{{resourcePath}}
|
||||
url: {{localBaseUrl}}/{{resourcePath}}?sort=desc
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
sort: desc
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,3 +9,7 @@ get {
|
|||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~tags: Tundra
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
Delete,
|
||||
Body,
|
||||
Param,
|
||||
Query,
|
||||
HttpCode,
|
||||
HttpStatus,
|
||||
BadRequestException,
|
||||
|
|
@ -23,8 +24,12 @@ export class CategoriesController {
|
|||
|
||||
@Get()
|
||||
@HttpCode(HttpStatus.OK)
|
||||
public async findAll(): Promise<Category[]> {
|
||||
return await this.categoriesService.findAll();
|
||||
public async find(@Query() filters: GetCategoryFilters): Promise<Category[]> {
|
||||
const ids = Array.isArray(filters.ids) ? filters.ids : filters.ids ? [filters.ids] : [];
|
||||
const categories = Array.isArray(filters.categories) ? filters.categories : filters.categories ? [filters.categories] : [];
|
||||
const sort = filters.sort?.toLowerCase() === 'desc' ? 'desc' : 'asc';
|
||||
|
||||
return await this.categoriesService.find({ ids, categories, sort});
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
|
|
@ -73,3 +78,9 @@ export class CategoriesController {
|
|||
return await this.categoriesService.remove(id);
|
||||
}
|
||||
}
|
||||
|
||||
export interface GetCategoryFilters {
|
||||
ids?: string[];
|
||||
categories?: string[];
|
||||
sort?: 'asc' | 'desc';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ import { CreateCategoryDto } from './dto/create-category.dto';
|
|||
import { UpdateCategoryDto } from './dto/update-category.dto';
|
||||
import { CategoryDataService } from './category-data.service';
|
||||
import { Category } from './entities/category.entity';
|
||||
import { GetCategoryFilters } from './categories.controller';
|
||||
|
||||
@Injectable()
|
||||
export class CategoriesService {
|
||||
public constructor(private categoryDataService: CategoryDataService) { }
|
||||
|
||||
public async findAll(): Promise<Category[]> {
|
||||
return await this.categoryDataService.getAll();
|
||||
public async find(filters: GetCategoryFilters): Promise<Category[]> {
|
||||
return await this.categoryDataService.get(filters);
|
||||
}
|
||||
|
||||
public async findById(id: string): Promise<Category> {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { DataSource, Repository } from 'typeorm';
|
||||
import { DataSource, ILike, Repository } from 'typeorm';
|
||||
import { Category } from './entities/category.entity';
|
||||
import { UpdateCategoryDto } from './dto/update-category.dto';
|
||||
import { GetCategoryFilters } from './categories.controller';
|
||||
|
||||
@Injectable()
|
||||
export class CategoryDataService {
|
||||
|
|
@ -11,8 +12,14 @@ export class CategoryDataService {
|
|||
this.categories = this.dataSource.getRepository(Category);
|
||||
}
|
||||
|
||||
public async getAll(): Promise<Category[]> {
|
||||
return await this.categories.find();
|
||||
public async get(filters: GetCategoryFilters): Promise<Category[]> {
|
||||
const idFilters = filters.ids?.map(id => { return { id }}) ?? [];
|
||||
const nameFilters = filters.categories?.map(tag => { return { name: ILike('%' + tag + '%') }}) ?? [];
|
||||
|
||||
return await this.categories.find({
|
||||
where: [...idFilters, ...nameFilters],
|
||||
order: { name: filters.sort === 'desc' ? 'desc' : 'asc' }
|
||||
});
|
||||
}
|
||||
|
||||
public async getById(id: string): Promise<Category | null> {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { DataSource, Repository } from 'typeorm';
|
||||
import { DataSource, ILike, Repository } from 'typeorm';
|
||||
import { Merchant } from './entities/merchant.entity';
|
||||
import { UpdateMerchantDto } from './dto/update-merchant.dto';
|
||||
import { GetMerchantFilters } from './merchants.controller';
|
||||
|
||||
@Injectable()
|
||||
export class MerchantDataService {
|
||||
|
|
@ -11,8 +12,14 @@ export class MerchantDataService {
|
|||
this.merchants = this.dataSource.getRepository(Merchant);
|
||||
}
|
||||
|
||||
public async getAll(): Promise<Merchant[]> {
|
||||
return await this.merchants.find();
|
||||
public async get(filters: GetMerchantFilters): Promise<Merchant[]> {
|
||||
const idFilters = filters.ids?.map(id => { return { id }}) ?? [];
|
||||
const nameFilters = filters.merchants?.map(tag => { return { name: ILike('%' + tag + '%') }}) ?? [];
|
||||
|
||||
return await this.merchants.find({
|
||||
where: [...idFilters, ...nameFilters],
|
||||
order: { name: filters.sort === 'desc' ? 'desc' : 'asc' }
|
||||
});
|
||||
}
|
||||
|
||||
public async getById(id: string): Promise<Merchant | null> {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
Delete,
|
||||
Body,
|
||||
Param,
|
||||
Query,
|
||||
HttpCode,
|
||||
HttpStatus,
|
||||
NotFoundException,
|
||||
|
|
@ -23,8 +24,12 @@ export class MerchantsController {
|
|||
|
||||
@Get()
|
||||
@HttpCode(HttpStatus.OK)
|
||||
public async findAll(): Promise<Merchant[]> {
|
||||
return await this.merchantsService.findAll();
|
||||
public async find(@Query() filters: GetMerchantFilters): Promise<Merchant[]> {
|
||||
const ids = Array.isArray(filters.ids) ? filters.ids : filters.ids ? [filters.ids] : [];
|
||||
const merchants = Array.isArray(filters.merchants) ? filters.merchants : filters.merchants ? [filters.merchants] : [];
|
||||
const sort = filters.sort?.toLowerCase() === 'desc' ? 'desc' : 'asc';
|
||||
|
||||
return await this.merchantsService.find({ ids, merchants, sort });
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
|
|
@ -73,3 +78,9 @@ export class MerchantsController {
|
|||
return await this.merchantsService.remove(id);
|
||||
}
|
||||
}
|
||||
|
||||
export interface GetMerchantFilters {
|
||||
ids?: string[];
|
||||
merchants?: string[];
|
||||
sort?: 'asc' | 'desc';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ import { CreateMerchantDto } from './dto/create-merchant.dto';
|
|||
import { UpdateMerchantDto } from './dto/update-merchant.dto';
|
||||
import { MerchantDataService } from './merchant-data.service';
|
||||
import { Merchant } from './entities/merchant.entity';
|
||||
import { GetMerchantFilters } from './merchants.controller';
|
||||
|
||||
@Injectable()
|
||||
export class MerchantsService {
|
||||
public constructor(private merchantDataService: MerchantDataService) { }
|
||||
|
||||
public async findAll(): Promise<Merchant[]> {
|
||||
return await this.merchantDataService.getAll();
|
||||
public async find(filters: GetMerchantFilters): Promise<Merchant[]> {
|
||||
return await this.merchantDataService.get(filters);
|
||||
}
|
||||
|
||||
public async findById(id: string): Promise<Merchant> {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { DataSource, Repository } from 'typeorm';
|
||||
import { DataSource, ILike, Repository } from 'typeorm';
|
||||
import { Tag } from './entities/tag.entity';
|
||||
import { UpdateTagDto } from './dto/update-tag.dto';
|
||||
import { GetTagFilters } from './tags.controller';
|
||||
|
||||
@Injectable()
|
||||
export class TagDataService {
|
||||
|
|
@ -11,8 +12,14 @@ export class TagDataService {
|
|||
this.tags = this.dataSource.getRepository(Tag);
|
||||
}
|
||||
|
||||
public async getAll(): Promise<Tag[]> {
|
||||
return await this.tags.find();
|
||||
public async get(filters: GetTagFilters): Promise<Tag[]> {
|
||||
const idFilters = filters.ids?.map(id => { return { id }}) ?? [];
|
||||
const nameFilters = filters.tags?.map(tag => { return { name: ILike('%' + tag + '%') }}) ?? [];
|
||||
|
||||
return await this.tags.find({
|
||||
where: [...idFilters, ...nameFilters],
|
||||
order: { name: filters.sort === 'desc' ? 'desc' : 'asc' }
|
||||
});
|
||||
}
|
||||
|
||||
public async getById(id: string): Promise<Tag | null> {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
Delete,
|
||||
Body,
|
||||
Param,
|
||||
Query,
|
||||
HttpCode,
|
||||
HttpStatus,
|
||||
BadRequestException,
|
||||
|
|
@ -23,8 +24,12 @@ export class TagsController {
|
|||
|
||||
@Get()
|
||||
@HttpCode(HttpStatus.OK)
|
||||
public async findAll(): Promise<Tag[]> {
|
||||
return await this.tagsService.findAll();
|
||||
public async find(@Query() filters: GetTagFilters): Promise<Tag[]> {
|
||||
const ids = Array.isArray(filters.ids) ? filters.ids : filters.ids ? [filters.ids] : [];
|
||||
const tags = Array.isArray(filters.tags) ? filters.tags : filters.tags ? [filters.tags] : [];
|
||||
const sort = filters.sort?.toLowerCase() === 'desc' ? 'desc' : 'asc';
|
||||
|
||||
return await this.tagsService.find({ ids, tags, sort });
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
|
|
@ -73,3 +78,9 @@ export class TagsController {
|
|||
return await this.tagsService.remove(id);
|
||||
}
|
||||
}
|
||||
|
||||
export interface GetTagFilters {
|
||||
ids?: string[];
|
||||
tags?: string[];
|
||||
sort?: 'asc' | 'desc';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ import { CreateTagDto } from './dto/create-tag.dto';
|
|||
import { UpdateTagDto } from './dto/update-tag.dto';
|
||||
import { TagDataService } from './tag-data.service';
|
||||
import { Tag } from './entities/tag.entity';
|
||||
import { GetTagFilters } from './tags.controller';
|
||||
|
||||
@Injectable()
|
||||
export class TagsService {
|
||||
public constructor(private tagDataService: TagDataService) { }
|
||||
|
||||
public async findAll(): Promise<Tag[]> {
|
||||
return await this.tagDataService.getAll();
|
||||
public async find(filters: GetTagFilters): Promise<Tag[]> {
|
||||
return await this.tagDataService.get(filters);
|
||||
}
|
||||
|
||||
public async findById(id: string): Promise<Tag> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue