Entity Storage Models Examples
These examples focus on wiring connectors through the shared factory and shaping typed API request and response contracts.
EntityStorageConnectorFactory
import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
interface Profile {
id: string;
email: string;
status: 'active' | 'inactive';
createdAt: string;
}
EntityStorageConnectorFactory.register(
'profile-storage',
() =>
new MemoryEntityStorageConnector<Profile>({
entitySchema: 'Profile'
})
);
const connector =
EntityStorageConnectorFactory.get<MemoryEntityStorageConnector<Profile>>('profile-storage');
await connector.set({
id: 'profile-1',
email: '[email protected]',
status: 'active',
createdAt: '2026-03-09T10:30:00.000Z'
});
import type {
IEntityStorageGetRequest,
IEntityStorageGetResponse,
IEntityStorageListRequest,
IEntityStorageListResponse,
IEntityStorageRemoveRequest,
IEntityStorageSetRequest
} from '@twin.org/entity-storage-models';
interface Profile {
id: string;
email: string;
status: 'active' | 'inactive';
createdAt: string;
}
const setRequest: IEntityStorageSetRequest = {
body: {
id: 'profile-1',
email: '[email protected]',
status: 'active',
createdAt: '2026-03-09T10:30:00.000Z'
}
};
const getRequest: IEntityStorageGetRequest = {
pathParams: { id: 'profile-1' }
};
const listRequest: IEntityStorageListRequest = {
query: {
limit: '25'
}
};
const getResponse: IEntityStorageGetResponse = {
body: setRequest.body
};
const listResponse: IEntityStorageListResponse = {
body: {
entities: [setRequest.body],
cursor: 'next-page-token'
}
};
const removeRequest: IEntityStorageRemoveRequest = {
pathParams: { id: 'profile-1' }
};