https://project.mdnd-it.cc/work_packages/94
This commit is contained in:
2025-08-23 04:25:28 +02:00
parent 725516ad6c
commit 19cfa031d0
25823 changed files with 1095586 additions and 2801759 deletions
@@ -0,0 +1,27 @@
import { IUserRepository } from '../../Domain/IRepository/IUserRepository';
import { IOrganizationRepository } from '../../Domain/IRepository/IOrganizationRepository';
import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository';
import { SearchQuery, SearchResult } from '../DTOs/SearchDto';
import { ShortUserDto } from '../DTOs/UserDto';
import { ShortOrganizationDto } from '../DTOs/OrganizationDto';
import { ShortDeckDto } from '../DTOs/DeckDto';
export type SearchType = 'users' | 'organizations' | 'decks';
export interface IGeneralSearchService {
searchUsers(searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto>>;
searchOrganizations(searchQuery: SearchQuery): Promise<SearchResult<ShortOrganizationDto>>;
searchDecks(searchQuery: SearchQuery): Promise<SearchResult<ShortDeckDto>>;
searchByType(searchType: SearchType, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
}
export declare class GeneralSearchService implements IGeneralSearchService {
private userRepo;
private organizationRepo;
private deckRepo;
constructor(userRepo: IUserRepository, organizationRepo: IOrganizationRepository, deckRepo: IDeckRepository);
static getSearchTypeFromUrl(url: string): SearchType;
searchUsers(searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto>>;
searchOrganizations(searchQuery: SearchQuery): Promise<SearchResult<ShortOrganizationDto>>;
searchDecks(searchQuery: SearchQuery): Promise<SearchResult<ShortDeckDto>>;
searchByType(searchType: SearchType, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
searchFromUrl(url: string, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
}
//# sourceMappingURL=Generalsearch.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"Generalsearch.d.ts","sourceRoot":"","sources":["../../../src/Application/Search/Generalsearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAK9D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC3F,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAC,CAAC;CAC3I;AAED,qBAAa,oBAAqB,YAAW,qBAAqB;IAE9D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,QAAQ;gBAFR,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,uBAAuB,EACzC,QAAQ,EAAE,eAAe;IAGnC,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAW9C,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IA8B1E,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;IA0B1F,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IA0B1E,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAC;IAatE,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAC;CAI7E"}
@@ -0,0 +1,114 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GeneralSearchService = void 0;
const UserMapper_1 = require("../DTOs/Mappers/UserMapper");
const OrganizationMapper_1 = require("../DTOs/Mappers/OrganizationMapper");
const DeckMapper_1 = require("../DTOs/Mappers/DeckMapper");
class GeneralSearchService {
constructor(userRepo, organizationRepo, deckRepo) {
this.userRepo = userRepo;
this.organizationRepo = organizationRepo;
this.deckRepo = deckRepo;
}
static getSearchTypeFromUrl(url) {
if (url.includes('/users/') || url.includes('/api/users/')) {
return 'users';
}
else if (url.includes('/organizations/') || url.includes('/api/organizations/')) {
return 'organizations';
}
else if (url.includes('/decks/') || url.includes('/api/decks/')) {
return 'decks';
}
return 'users';
}
async searchUsers(searchQuery) {
const { query, limit = 20, offset = 0 } = searchQuery;
if (!query || query.trim().length === 0) {
return {
results: [],
totalCount: 0,
hasMore: false,
searchQuery: query,
searchType: 'users'
};
}
try {
const { users, totalCount } = await this.userRepo.search(query.trim(), limit, offset);
const results = users.map(user => UserMapper_1.UserMapper.toShortDto(user));
const hasMore = (offset + limit) < totalCount;
return {
results,
totalCount,
hasMore,
searchQuery: query,
searchType: 'users'
};
}
catch (error) {
throw new Error('Failed to search users');
}
}
async searchOrganizations(searchQuery) {
const { query, limit = 20, offset = 0 } = searchQuery;
if (!query || query.trim().length === 0) {
return {
results: [],
totalCount: 0,
hasMore: false,
searchQuery: query,
searchType: 'organizations'
};
}
const { organizations, totalCount } = await this.organizationRepo.search(query.trim(), limit, offset);
const results = organizations.map(org => OrganizationMapper_1.OrganizationMapper.toShortDto(org));
const hasMore = (offset + limit) < totalCount;
return {
results,
totalCount,
hasMore,
searchQuery: query,
searchType: 'organizations'
};
}
async searchDecks(searchQuery) {
const { query, limit = 20, offset = 0 } = searchQuery;
if (!query || query.trim().length === 0) {
return {
results: [],
totalCount: 0,
hasMore: false,
searchQuery: query,
searchType: 'decks'
};
}
const { decks, totalCount } = await this.deckRepo.search(query.trim(), limit, offset);
const results = decks.map(deck => DeckMapper_1.DeckMapper.toShortDto(deck));
const hasMore = (offset + limit) < totalCount;
return {
results,
totalCount,
hasMore,
searchQuery: query,
searchType: 'decks'
};
}
async searchByType(searchType, searchQuery) {
switch (searchType) {
case 'users':
return await this.searchUsers(searchQuery);
case 'organizations':
return await this.searchOrganizations(searchQuery);
case 'decks':
return await this.searchDecks(searchQuery);
default:
throw new Error(`Unsupported search type: ${searchType}`);
}
}
async searchFromUrl(url, searchQuery) {
const searchType = GeneralSearchService.getSearchTypeFromUrl(url);
return await this.searchByType(searchType, searchQuery);
}
}
exports.GeneralSearchService = GeneralSearchService;
//# sourceMappingURL=Generalsearch.js.map
@@ -0,0 +1 @@
{"version":3,"file":"Generalsearch.js","sourceRoot":"","sources":["../../../src/Application/Search/Generalsearch.ts"],"names":[],"mappings":"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"}