mirror of
https://github.com/immich-app/immich.git
synced 2025-05-31 04:05:39 -04:00
refactor: stop using geodata entity type (#17444)
This commit is contained in:
parent
b352cf3336
commit
8203b6c450
@ -4,8 +4,8 @@ import { IsEnum, IsInt, IsNotEmpty, IsString, Max, Min } from 'class-validator';
|
|||||||
import { PropertyLifecycle } from 'src/decorators';
|
import { PropertyLifecycle } from 'src/decorators';
|
||||||
import { AlbumResponseDto } from 'src/dtos/album.dto';
|
import { AlbumResponseDto } from 'src/dtos/album.dto';
|
||||||
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
||||||
import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
|
|
||||||
import { AssetOrder, AssetType } from 'src/enum';
|
import { AssetOrder, AssetType } from 'src/enum';
|
||||||
|
import { SearchPlacesItem } from 'src/types';
|
||||||
import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation';
|
import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation';
|
||||||
|
|
||||||
class BaseSearchDto {
|
class BaseSearchDto {
|
||||||
@ -226,15 +226,16 @@ export class PlacesResponseDto {
|
|||||||
admin2name?: string;
|
admin2name?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function mapPlaces(place: GeodataPlacesEntity): PlacesResponseDto {
|
export function mapPlaces(place: SearchPlacesItem): PlacesResponseDto {
|
||||||
return {
|
return {
|
||||||
name: place.name,
|
name: place.name,
|
||||||
latitude: place.latitude,
|
latitude: place.latitude,
|
||||||
longitude: place.longitude,
|
longitude: place.longitude,
|
||||||
admin1name: place.admin1Name,
|
admin1name: place.admin1Name ?? undefined,
|
||||||
admin2name: place.admin2Name,
|
admin2name: place.admin2Name ?? undefined,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum SearchSuggestionType {
|
export enum SearchSuggestionType {
|
||||||
COUNTRY = 'country',
|
COUNTRY = 'country',
|
||||||
STATE = 'state',
|
STATE = 'state',
|
||||||
|
@ -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;
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ import { randomUUID } from 'node:crypto';
|
|||||||
import { DB } from 'src/db';
|
import { DB } from 'src/db';
|
||||||
import { DummyValue, GenerateSql } from 'src/decorators';
|
import { DummyValue, GenerateSql } from 'src/decorators';
|
||||||
import { AssetEntity, searchAssetBuilder } from 'src/entities/asset.entity';
|
import { AssetEntity, searchAssetBuilder } from 'src/entities/asset.entity';
|
||||||
import { GeodataPlacesEntity } from 'src/entities/geodata-places.entity';
|
|
||||||
import { AssetStatus, AssetType } from 'src/enum';
|
import { AssetStatus, AssetType } from 'src/enum';
|
||||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||||
import { anyUuid, asUuid } from 'src/utils/database';
|
import { anyUuid, asUuid } from 'src/utils/database';
|
||||||
@ -372,7 +371,7 @@ export class SearchRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GenerateSql({ params: [DummyValue.STRING] })
|
@GenerateSql({ params: [DummyValue.STRING] })
|
||||||
searchPlaces(placeName: string): Promise<GeodataPlacesEntity[]> {
|
searchPlaces(placeName: string) {
|
||||||
return this.db
|
return this.db
|
||||||
.selectFrom('geodata_places')
|
.selectFrom('geodata_places')
|
||||||
.selectAll()
|
.selectAll()
|
||||||
@ -395,7 +394,7 @@ export class SearchRepository {
|
|||||||
`,
|
`,
|
||||||
)
|
)
|
||||||
.limit(20)
|
.limit(20)
|
||||||
.execute() as Promise<GeodataPlacesEntity[]>;
|
.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GenerateSql({ params: [[DummyValue.UUID]] })
|
@GenerateSql({ params: [[DummyValue.UUID]] })
|
||||||
|
@ -16,6 +16,7 @@ import {
|
|||||||
import { ActivityRepository } from 'src/repositories/activity.repository';
|
import { ActivityRepository } from 'src/repositories/activity.repository';
|
||||||
import { ApiKeyRepository } from 'src/repositories/api-key.repository';
|
import { ApiKeyRepository } from 'src/repositories/api-key.repository';
|
||||||
import { MemoryRepository } from 'src/repositories/memory.repository';
|
import { MemoryRepository } from 'src/repositories/memory.repository';
|
||||||
|
import { SearchRepository } from 'src/repositories/search.repository';
|
||||||
import { SessionRepository } from 'src/repositories/session.repository';
|
import { SessionRepository } from 'src/repositories/session.repository';
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
|
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 IActivityRepository = RepositoryInterface<ActivityRepository>;
|
||||||
type IApiKeyRepository = RepositoryInterface<ApiKeyRepository>;
|
type IApiKeyRepository = RepositoryInterface<ApiKeyRepository>;
|
||||||
type IMemoryRepository = RepositoryInterface<MemoryRepository>;
|
type IMemoryRepository = RepositoryInterface<MemoryRepository>;
|
||||||
|
type ISearchRepository = RepositoryInterface<SearchRepository>;
|
||||||
type ISessionRepository = RepositoryInterface<SessionRepository>;
|
type ISessionRepository = RepositoryInterface<SessionRepository>;
|
||||||
|
|
||||||
export type ActivityItem =
|
export type ActivityItem =
|
||||||
| Awaited<ReturnType<IActivityRepository['create']>>
|
| Awaited<ReturnType<IActivityRepository['create']>>
|
||||||
| Awaited<ReturnType<IActivityRepository['search']>>[0];
|
| Awaited<ReturnType<IActivityRepository['search']>>[0];
|
||||||
|
|
||||||
|
export type SearchPlacesItem = Awaited<ReturnType<ISearchRepository['searchPlaces']>>[0];
|
||||||
|
|
||||||
export type ApiKeyItem =
|
export type ApiKeyItem =
|
||||||
| Awaited<ReturnType<IApiKeyRepository['create']>>
|
| Awaited<ReturnType<IApiKeyRepository['create']>>
|
||||||
| NonNullable<Awaited<ReturnType<IApiKeyRepository['getById']>>>
|
| NonNullable<Awaited<ReturnType<IApiKeyRepository['getById']>>>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user