refactor: share domain reference reader contracts
This commit is contained in:
@@ -1,4 +1,12 @@
|
|||||||
import type { ReferenceRepository } from '../../domain/model';
|
import type { ReferenceReaderHandle } from '../../domain/reference';
|
||||||
|
export type {
|
||||||
|
ReferenceRepository, ReferenceCategoryRecord, ReferenceGroupRecord,
|
||||||
|
ReferenceTypeRecord, ReferenceRegionRecord, ReferenceConstellationRecord,
|
||||||
|
ReferenceSystemRecord, ReferenceStationEvidence, ReferenceStationRecord,
|
||||||
|
ReferenceSearchOptions, ReferenceListOptions, ReferenceIdSelection,
|
||||||
|
ReferenceGroupSelection, ReferenceSystemSelection, ReferenceStationSelection,
|
||||||
|
ReferenceReader,
|
||||||
|
} from '../../domain/reference';
|
||||||
|
|
||||||
export const REFERENCE_SOURCES = ['reference-data', 'hoboleaks', 'esi-universe'] as const;
|
export const REFERENCE_SOURCES = ['reference-data', 'hoboleaks', 'esi-universe'] as const;
|
||||||
export type ReferenceSourceName = (typeof REFERENCE_SOURCES)[number];
|
export type ReferenceSourceName = (typeof REFERENCE_SOURCES)[number];
|
||||||
@@ -141,84 +149,6 @@ export interface EsiUniversePayload {
|
|||||||
stations?: Record<string, ReferenceStation>;
|
stations?: Record<string, ReferenceStation>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ReferenceCategoryRecord {
|
|
||||||
id: number;
|
|
||||||
name: string;
|
|
||||||
published?: boolean;
|
|
||||||
}
|
|
||||||
export interface ReferenceGroupRecord {
|
|
||||||
id: number;
|
|
||||||
categoryId: number;
|
|
||||||
name: string;
|
|
||||||
published?: boolean;
|
|
||||||
}
|
|
||||||
export interface ReferenceTypeRecord {
|
|
||||||
id: number;
|
|
||||||
name: string;
|
|
||||||
categoryId: number;
|
|
||||||
groupId: number;
|
|
||||||
published?: boolean;
|
|
||||||
volume?: number;
|
|
||||||
}
|
|
||||||
export interface ReferenceRegionRecord { id: number; name: string | null; }
|
|
||||||
export interface ReferenceConstellationRecord { id: number; name: string | null; regionId: number | null; }
|
|
||||||
export interface ReferenceSystemRecord {
|
|
||||||
id: number;
|
|
||||||
name: string;
|
|
||||||
constellationId: number;
|
|
||||||
regionId: number | null;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
z: number;
|
|
||||||
securityStatus: number;
|
|
||||||
securityClass: string | null;
|
|
||||||
}
|
|
||||||
export type ReferenceStationEvidence = 'verified' | 'system_listed';
|
|
||||||
export interface ReferenceStationRecord {
|
|
||||||
id: number;
|
|
||||||
systemId: number;
|
|
||||||
systemName: string | null;
|
|
||||||
regionId: number | null;
|
|
||||||
/** Evidence distinguishes authoritative station rows from system-list-only IDs. */
|
|
||||||
evidence: ReferenceStationEvidence;
|
|
||||||
/** Compatibility projection; true exactly when evidence is `verified`. */
|
|
||||||
sourceVerified: boolean;
|
|
||||||
name: string | null;
|
|
||||||
typeId: number | null;
|
|
||||||
ownerId: number | null;
|
|
||||||
x: number | null;
|
|
||||||
y: number | null;
|
|
||||||
z: number | null;
|
|
||||||
}
|
|
||||||
export interface ReferenceSearchOptions {
|
|
||||||
query: string;
|
|
||||||
categoryId?: number;
|
|
||||||
groupId?: number;
|
|
||||||
published?: boolean;
|
|
||||||
limit?: number;
|
|
||||||
offset?: number;
|
|
||||||
}
|
|
||||||
export interface ReferenceListOptions {
|
|
||||||
ids?: number[];
|
|
||||||
query?: string;
|
|
||||||
limit?: number;
|
|
||||||
offset?: number;
|
|
||||||
}
|
|
||||||
export type ReferenceIdSelection = number[] | ReferenceListOptions | undefined;
|
|
||||||
export type ReferenceGroupSelection = number[] | (ReferenceListOptions & { categoryId?: number }) | undefined;
|
|
||||||
export type ReferenceSystemSelection = number[] | (ReferenceListOptions & { constellationId?: number; regionId?: number }) | undefined;
|
|
||||||
export type ReferenceStationSelection = number[] | (ReferenceListOptions & { systemId?: number }) | undefined;
|
|
||||||
export interface ReferenceReader extends ReferenceRepository {
|
|
||||||
searchTypes(options: ReferenceSearchOptions): Promise<ReferenceTypeRecord[]>;
|
|
||||||
searchTypesByName(query: string, options?: Omit<ReferenceSearchOptions, 'query'>): Promise<ReferenceTypeRecord[]>;
|
|
||||||
categories(selection?: ReferenceIdSelection): Promise<ReferenceCategoryRecord[]>;
|
|
||||||
groups(selection?: ReferenceGroupSelection): Promise<ReferenceGroupRecord[]>;
|
|
||||||
regions(selection?: ReferenceIdSelection): Promise<ReferenceRegionRecord[]>;
|
|
||||||
constellations(selection?: ReferenceIdSelection): Promise<ReferenceConstellationRecord[]>;
|
|
||||||
systems(selection?: ReferenceSystemSelection): Promise<ReferenceSystemRecord[]>;
|
|
||||||
stations(selection?: ReferenceStationSelection): Promise<ReferenceStationRecord[]>;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SourceCheck {
|
export interface SourceCheck {
|
||||||
source: ReferenceSourceName;
|
source: ReferenceSourceName;
|
||||||
checkedAt: string;
|
checkedAt: string;
|
||||||
@@ -377,7 +307,7 @@ export interface SourceCheckResult {
|
|||||||
error?: string;
|
error?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ReferenceSnapshot extends ReferenceReader {
|
export interface ReferenceSnapshot extends ReferenceReaderHandle {
|
||||||
close(): void;
|
close(): void;
|
||||||
readonly pinnedVersion: string;
|
readonly pinnedVersion: string;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user