refactor: stop using geodata entity type (#17444)

This commit is contained in:
Jason Rasmussen 2025-04-08 00:15:43 -04:00 committed by GitHub
parent b352cf3336
commit 8203b6c450
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 11 additions and 20 deletions

View File

@ -4,8 +4,8 @@ import { IsEnum, IsInt, IsNotEmpty, IsString, Max, Min } from 'class-validator';
import { PropertyLifecycle } from 'src/decorators';
import { AlbumResponseDto } from 'src/dtos/album.dto';
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
import { AssetOrder, AssetType } from 'src/enum';
import { SearchPlacesItem } from 'src/types';
import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation';
class BaseSearchDto {
@ -226,15 +226,16 @@ export class PlacesResponseDto {
admin2name?: string;
}
export function mapPlaces(place: GeodataPlacesEntity): PlacesResponseDto {
export function mapPlaces(place: SearchPlacesItem): PlacesResponseDto {
return {
name: place.name,
latitude: place.latitude,
longitude: place.longitude,
admin1name: place.admin1Name,
admin2name: place.admin2Name,
admin1name: place.admin1Name ?? undefined,
admin2name: place.admin2Name ?? undefined,
};
}
export enum SearchSuggestionType {
COUNTRY = 'country',
STATE = 'state',

View File

@ -1,13 +0,0 @@
export class GeodataPlacesEntity {
id!: number;
name!: string;
longitude!: number;
latitude!: number;
countryCode!: string;
admin1Code!: string;
admin2Code!: string;
admin1Name!: string;
admin2Name!: string;
alternateNames!: string;
modificationDate!: Date;
}

View File

@ -5,7 +5,6 @@ import { randomUUID } from 'node:crypto';
import { DB } from 'src/db';
import { DummyValue, GenerateSql } from 'src/decorators';
import { AssetEntity, searchAssetBuilder } from 'src/entities/asset.entity';
import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
import { AssetStatus, AssetType } from 'src/enum';
import { LoggingRepository } from 'src/repositories/logging.repository';
import { anyUuid, asUuid } from 'src/utils/database';
@ -372,7 +371,7 @@ export class SearchRepository {
}
@GenerateSql({ params: [DummyValue.STRING] })
searchPlaces(placeName: string): Promise<GeodataPlacesEntity[]> {
searchPlaces(placeName: string) {
return this.db
.selectFrom('geodata_places')
.selectAll()
@ -395,7 +394,7 @@ export class SearchRepository {
`,
)
.limit(20)
.execute() as Promise<GeodataPlacesEntity[]>;
.execute();
}
@GenerateSql({ params: [[DummyValue.UUID]] })

View File

@ -16,6 +16,7 @@ import {
import { ActivityRepository } from 'src/repositories/activity.repository';
import { ApiKeyRepository } from 'src/repositories/api-key.repository';
import { MemoryRepository } from 'src/repositories/memory.repository';
import { SearchRepository } from 'src/repositories/search.repository';
import { SessionRepository } from 'src/repositories/session.repository';
export type DeepPartial<T> = T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
@ -25,12 +26,15 @@ export type RepositoryInterface<T extends object> = Pick<T, keyof T>;
type IActivityRepository = RepositoryInterface<ActivityRepository>;
type IApiKeyRepository = RepositoryInterface<ApiKeyRepository>;
type IMemoryRepository = RepositoryInterface<MemoryRepository>;
type ISearchRepository = RepositoryInterface<SearchRepository>;
type ISessionRepository = RepositoryInterface<SessionRepository>;
export type ActivityItem =
| Awaited<ReturnType<IActivityRepository['create']>>
| Awaited<ReturnType<IActivityRepository['search']>>[0];
export type SearchPlacesItem = Awaited<ReturnType<ISearchRepository['searchPlaces']>>[0];
export type ApiKeyItem =
| Awaited<ReturnType<IApiKeyRepository['create']>>
| NonNullable<Awaited<ReturnType<IApiKeyRepository['getById']>>>