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 type ReferenceSourceName = (typeof REFERENCE_SOURCES)[number];
|
||||
@@ -141,84 +149,6 @@ export interface EsiUniversePayload {
|
||||
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 {
|
||||
source: ReferenceSourceName;
|
||||
checkedAt: string;
|
||||
@@ -377,7 +307,7 @@ export interface SourceCheckResult {
|
||||
error?: string;
|
||||
}
|
||||
|
||||
export interface ReferenceSnapshot extends ReferenceReader {
|
||||
export interface ReferenceSnapshot extends ReferenceReaderHandle {
|
||||
close(): void;
|
||||
readonly pinnedVersion: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user