couchbase-index-manager
Version:
Manage Couchbase indexes during the CI/CD process
50 lines (49 loc) • 1.72 kB
TypeScript
export declare enum PartitionStrategy {
Hash = "HASH"
}
export declare enum ConfigurationType {
Index = "index",
Override = "override",
NodeMap = "nodeMap"
}
export interface Lifecycle {
drop?: boolean;
}
export interface Partition {
exprs: string[];
strategy?: PartitionStrategy;
num_partition?: number;
}
export type PostProcessHandler = (this: IndexConfigurationBase, require: NodeRequire, process: NodeJS.Process) => void;
export interface IndexConfigurationBase {
name?: string;
scope?: string;
collection?: string;
is_primary?: boolean;
index_key?: string | string[];
condition?: string | null;
partition?: Partition | null;
manual_replica?: boolean;
num_replica?: number;
nodes?: string[];
retain_deleted_xattr?: boolean;
lifecycle?: Lifecycle;
post_process?: string | PostProcessHandler;
}
export interface IndexConfiguration extends Omit<IndexConfigurationBase, "post_process"> {
type?: ConfigurationType.Index;
}
export interface OverrideConfiguration extends IndexConfigurationBase {
type: ConfigurationType.Override;
}
export interface NodeMapConfiguration {
type: ConfigurationType.NodeMap;
map: {
[key: string]: string;
};
}
export type ConfigurationItem = IndexConfiguration | OverrideConfiguration | NodeMapConfiguration;
export declare function isIndex(item: ConfigurationItem): item is IndexConfiguration;
export declare function isOverride(item: ConfigurationItem): item is OverrideConfiguration;
export declare function isNodeMap(item: ConfigurationItem): item is NodeMapConfiguration;
export declare function isSameIndex(a: IndexConfigurationBase, b: IndexConfigurationBase): boolean;