UNPKG

@tendrock/database

Version:

A database lib under the Tendrock ecosystem for Minecraft Bedrock Edition Script API

45 lines (44 loc) 2.63 kB
import { Block, Entity, ItemStack, World } from "@minecraft/server"; import { BlockDatabase, EntityDatabase, ItemStackDatabase, WorldDatabase } from "../impl"; import { GameObjectDatabase } from "../GameObjectDatabase"; import { BetterSet } from "@tenolib/map"; import { DatabaseManager } from "./DatabaseManager"; import { DatabaseTypes } from "../DatabaseTypes"; export type DatabaseTypeBy<T> = T extends (string | Block) ? BlockDatabase : T extends Entity ? EntityDatabase : T extends ItemStack ? ItemStackDatabase : WorldDatabase; export type DatabaseFactory<T extends Block | Entity | ItemStack | World | string> = { create(namespace: string, manager: NamespacedDatabaseManager, gameObject: T, initialIdList?: [string, string][]): InstanceType<DatabaseFactory<T>>; } & (new (...args: any[]) => any); export type DatabaseTypeMap = { [DatabaseTypes.Entity]: EntityDatabase; [DatabaseTypes.Block]: BlockDatabase; [DatabaseTypes.Item]: ItemStackDatabase; [DatabaseTypes.World]: WorldDatabase; }; export declare class NamespacedDatabaseManager { protected readonly namespace: string; private readonly _parentManager; private _blockDatabaseMap; private _itemDatabaseMap; private _entityDatabaseMap; private _worldDatabase; private _blockInitialIdListMap; private _worldInitialIdList; private _isFlushing; private _dirtyDatabaseList; private _dirtyDatabaseBuffer; protected constructor(namespace: string, _parentManager: DatabaseManager); static _create(runtimeId: string, namespace: string, parentManager: DatabaseManager): NamespacedDatabaseManager; _markDirty(runtimeId: string, dataBase: GameObjectDatabase<any>): void; _addBlockDataId(runtimeId: string, lid: string, propertyId: string, dataId: string): void; _addWorldDataId(runtimeId: string, propertyId: string, dataId: string): void; private _prepare; getOrCreate<T extends Block | Entity | ItemStack | World | string>(gameObject: T): DatabaseTypeBy<T>; get<T extends Block | Entity | ItemStack | World | string>(gameObject: T): DatabaseTypeBy<T> | undefined; getDatabaseList<T extends DatabaseTypes>(type: T): DatabaseTypeMap[T][]; getWorldDatabase(): DatabaseTypeBy<World> | undefined; remove<T extends Block | Entity | ItemStack | World | string>(gameObject: T, clearData?: boolean): void; _addDatabase<T extends Block | Entity | ItemStack | World | string>(runtimeId: string, database: DatabaseTypeBy<T>): void; _beginFlush(runtimeId: string): void; _endFlush(runtimeId: string): void; getDirtyDatabaseList(): BetterSet<GameObjectDatabase<any>>; }