MCPcopy Create free account
hub / github.com/bytebase/bytebase / createInstanceSlice

Function createInstanceSlice

frontend/src/react/stores/app/instance.ts:72–336  ·  view source on GitHub ↗
(
  set,
  get
)

Source from the content-addressed store, hash-verified

70};
71
72export const createInstanceSlice: AppSliceCreator<InstanceSlice> = (
73 set,
74 get
75) => {
76 const unknownInstance = createUnknownInstance();
77
78 // Immutable bulk upsert into the by-name cache.
79 const upsertInstances = (instances: Instance[]): Instance[] => {
80 set((state) => {
81 const instancesByName = { ...state.instancesByName };
82 for (const instance of instances) {
83 instancesByName[instance.name] = instance;
84 }
85 return { instancesByName };
86 });
87 return instances;
88 };
89
90 return {
91 instancesByName: {},
92 instanceRequests: {},
93 instanceErrorsByName: {},
94
95 resetInstances: () => {
96 set({
97 instancesByName: {},
98 instanceRequests: {},
99 instanceErrorsByName: {},
100 });
101 },
102
103 fetchInstance: async (name) => {
104 if (!isValidInstanceName(name) || name === UNKNOWN_INSTANCE_NAME) {
105 return undefined;
106 }
107 const existing = get().instancesByName[name];
108 if (existing) return existing;
109 const pending = get().instanceRequests[name];
110 if (pending) return pending;
111
112 const request = instanceServiceClientConnect
113 .getInstance(createProto(GetInstanceRequestSchema, { name }))
114 .then((instance: Instance) => {
115 set((state) => {
116 const { [name]: _, ...instanceRequests } = state.instanceRequests;
117 return {
118 instancesByName: {
119 ...state.instancesByName,
120 [instance.name]: instance,
121 },
122 instanceErrorsByName: {
123 ...state.instanceErrorsByName,
124 [name]: undefined,
125 },
126 instanceRequests,
127 };
128 });
129 return instance;

Callers 1

createAppStoreFunction · 0.90

Calls 14

isValidInstanceNameFunction · 0.90
toErrorFunction · 0.90
hasWorkspacePermissionV2Function · 0.90
setFunction · 0.85
getFunction · 0.85
upsertInstancesFunction · 0.85
getListInstanceFilterFunction · 0.85
getInstanceMethod · 0.80
syncInstanceMethod · 0.80
addDataSourceMethod · 0.80
removeDataSourceMethod · 0.80

Tested by

no test coverage detected