Skip to content

Commit 04dfc3b

Browse files
v-excelsiorValodyaviktor-liablin
authored
BKNDLSS-28538 Hive
* BKNDLSS-28538 Hive JS-SDK * fix ts definition tests * fix after review * add set and sorted set stores * make min and max score argument optional * fixes after review * - refactor tsd test for hive * - refactor Hive API * - BKNDLSS-29408 Replace header plain-text with application-json for Hive API * - returns "void" for hive.xStore.touch() method * - split the hive.listStore.insert method to "insertBefore" and "insertAfter" methods * - add decrement methods for Map and SortedSet Hive types * - add secondsSinceLastOperation hive method * - fix methods for Hive Set/SortedSet types * - fix methods for Hive * - rename scoreAmount to scoreValue * - rename "remove" to "delete" * - change KeyValueSetKeyOptionsI * - change void * - remove renameIfNotExists method * - fix the MapStore().setValue method * - BKNDLSS-29408 * - BKNDLSS-29407 * - BKNDLSS-29475 * - BKNDLSS-29418 * - BKNDLSS-29399 * - BKNDLSS-29475 * - BKNDLSS-29415 * - BKNDLSS-29405 Should we change KeyValueSetKeyOptions interface * - BKNDLSS-29400 What should we return for the general "touch" method in Hive * - BKNDLSS-29402 should we rename "renameIfNotExists" method in Hive * - fix methods for Hive * - BKNDLSS-29405 Should we change KeyValueSetKeyOptions interface * - BKNDLSS-29402 should we rename "renameIfNotExists" method in Hive * Hive. List and Sorted store methods not work (#229) * - fix methods for Hive * - fix methods for Hive Co-authored-by: Vladimir Upirov <[email protected]> Co-authored-by: viktor-liablin <[email protected]>
1 parent 4f4ada1 commit 04dfc3b

File tree

20 files changed

+7443
-60
lines changed

20 files changed

+7443
-60
lines changed

backendless.d.ts

Lines changed: 332 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,338 @@ declare module Backendless {
277277
function mapTableToClass(clientClass: Function): void;
278278
}
279279

280+
/**
281+
* @public
282+
* @type: Function
283+
**/
284+
function Hive(hiveName: string): Backendless.Hive.DataHive;
285+
286+
/**
287+
* @public
288+
* @namespace Backendless.Hive
289+
*/
290+
namespace Hive {
291+
/**
292+
* @public
293+
* @type: Function
294+
*/
295+
function getNames(): Array<string>
296+
297+
/**
298+
* @public
299+
* @class Backendless.Hive.DataHive
300+
* @constructor
301+
*/
302+
class DataHive {
303+
constructor(hiveName: string, appContext: object);
304+
305+
create(): Promise<void>
306+
307+
delete(): Promise<void>
308+
309+
rename(newName: string): Promise<void>
310+
311+
KeyValueStore: KeyValueStore;
312+
ListStore: ListStore;
313+
MapStore: MapStore;
314+
SetStore: SetStore;
315+
SortedSetStore: SortedSetStore;
316+
}
317+
318+
interface StoreKeysOptionsI {
319+
filterPattern?: string;
320+
cursor?: number;
321+
pageSize?: number;
322+
}
323+
324+
interface StoreKeysResultI {
325+
keys: string[];
326+
cursorId: string;
327+
}
328+
329+
/**
330+
* @private
331+
*/
332+
interface HiveStore {
333+
keys(options?: StoreKeysOptionsI): Promise<StoreKeysResultI>;
334+
335+
delete(keys: Array<string>): Promise<void>;
336+
337+
exists(keys: Array<string>): Promise<number>;
338+
339+
touch(keys: Array<string>): Promise<void>;
340+
}
341+
342+
/**
343+
* @private
344+
*/
345+
interface hiveStore {
346+
347+
delete(): Promise<number>;
348+
349+
rename(newKeyName: string, overwrite?: boolean): Promise<void>;
350+
351+
exists(): Promise<boolean>;
352+
353+
getExpiration(): Promise<number>;
354+
355+
clearExpiration(): Promise<void>;
356+
357+
touch(): Promise<void>;
358+
359+
secondsSinceLastOperation(): Promise<number>;
360+
361+
expireAfter(ttl: number): Promise<void>;
362+
363+
expireAt(timestamp: number): Promise<void>;
364+
}
365+
366+
interface KeyValueSetKeyOptionsI {
367+
ttl?: Number; // in seconds
368+
expireAt?: Number; // timestamp
369+
condition?: 'IfExists' | 'IfNotExists' | 'Always'; //if not provided set anyway
370+
}
371+
372+
/**
373+
* @public
374+
*/
375+
interface KeyValueStore extends HiveStore {
376+
(keyName: string): keyValueStore
377+
378+
get(keys: Array<string>): Promise<object>;
379+
380+
set(key: string, value: string, options?: KeyValueSetKeyOptionsI): Promise<boolean>;
381+
382+
set(keysMap: object): Promise<boolean>;
383+
}
384+
385+
/**
386+
* @public
387+
*/
388+
interface keyValueStore extends hiveStore {
389+
get(): Promise<string | null>;
390+
391+
set(value: string, options?: KeyValueSetKeyOptionsI): Promise<void>;
392+
393+
increment(value: number): Promise<number>;
394+
395+
decrement(value: number): Promise<number>;
396+
}
397+
398+
/**
399+
* @public
400+
*/
401+
interface ListStore extends HiveStore {
402+
(keyName: string): listStore
403+
}
404+
405+
/**
406+
* @public
407+
*/
408+
interface listStore extends hiveStore {
409+
get(): Promise<Array<string>>;
410+
411+
get(index: number): Promise<string | null>;
412+
413+
get(indexFrom: number, indexTo: number): Promise<Array<string>>;
414+
415+
set(values: Array<string>): Promise<number>;
416+
417+
set(value: string, index: number): Promise<void>;
418+
419+
insertBefore(valueToInsert: string, anchorValue: string): Promise<number>;
420+
421+
insertAfter(valueToInsert: string, anchorValue: string): Promise<number>;
422+
423+
length(): Promise<number>;
424+
425+
addFirst(value: string): Promise<number>
426+
427+
addFirst(values: Array<string>): Promise<number>
428+
429+
addLast(value: string): Promise<number>
430+
431+
addLast(values: Array<string>): Promise<number>
432+
433+
deleteFirst(): Promise<string | null>
434+
435+
deleteFirst(count: number): Promise<Array<string> | null>
436+
437+
deleteLast(): Promise<string | null>
438+
439+
deleteLast(count: number): Promise<Array<string> | null>
440+
441+
deleteValue(value: string, count?: number): Promise<number>
442+
}
443+
444+
/**
445+
* @public
446+
*/
447+
interface MapStore extends HiveStore {
448+
(keyName: string): mapStore
449+
}
450+
451+
/**
452+
* @public
453+
*/
454+
interface mapStore extends hiveStore {
455+
456+
get(): Promise<object>;
457+
458+
get(key: string): Promise<object>;
459+
460+
get(keys: Array<string>): Promise<object>;
461+
462+
getValue(key: string): Promise<string | null>;
463+
464+
keyExists(key: string): Promise<boolean>;
465+
466+
length(): Promise<number>;
467+
468+
keys(): Promise<Array<string>>;
469+
470+
values(): Promise<Array<string>>;
471+
472+
set(data: object): Promise<number>;
473+
474+
set(key: string, value: string): Promise<boolean>;
475+
476+
setWithOverwrite(key: string, value: string, overwrite?: boolean): Promise<boolean>;
477+
478+
add(data: object): Promise<number>;
479+
480+
increment(key: string, count?: number): Promise<number>;
481+
482+
decrement(key: string, count?: number): Promise<number>;
483+
484+
deleteKeys(key: string): Promise<number>;
485+
486+
deleteKeys(keys: Array<string>): Promise<number>;
487+
}
488+
489+
/**
490+
* @public
491+
*/
492+
interface SetStore extends HiveStore {
493+
(keyName: string): setStore;
494+
495+
difference(storeKeys: Array<string>): Promise<Array<string>>;
496+
497+
intersection(storeKeys: Array<string>): Promise<Array<string>>;
498+
499+
union(storeKeys: Array<string>): Promise<Array<string>>;
500+
}
501+
502+
/**
503+
* @public
504+
*/
505+
interface setStore extends hiveStore {
506+
507+
get(): Promise<Array<string>>;
508+
509+
getRandom(count?: number): Promise<Array<string>>;
510+
511+
getRandomAndDelete(count?: number): Promise<Array<string>>;
512+
513+
set(value: string): Promise<number>;
514+
515+
set(values: Array<string>): Promise<number>;
516+
517+
add(value: string): Promise<number>;
518+
519+
add(values: Array<string>): Promise<number>;
520+
521+
deleteValues(value: string): Promise<number>;
522+
523+
deleteValues(values: Array<string>): Promise<number>;
524+
525+
isMember(value: string | Array<string>): Promise<Array<string>>;
526+
527+
length(): Promise<number>;
528+
}
529+
530+
type SortedSetItem = [number, string]
531+
type SortedSetBound = 'Include' | 'Exclude' | 'Infinity'
532+
533+
interface SortedSetItemOptionsI {
534+
duplicateBehaviour?: 'OnlyUpdate' | 'AlwaysAdd';
535+
scoreUpdateMode?: 'Greater' | 'Less';
536+
resultType?: 'NewAdded' | 'TotalChanged';
537+
}
538+
539+
interface SortedSetFilterI {
540+
minScore?: number,
541+
maxScore?: number,
542+
minBound?: SortedSetBound,
543+
maxBound?: SortedSetBound,
544+
}
545+
546+
/**
547+
* @public
548+
*/
549+
interface SortedSetStore extends HiveStore {
550+
(keyName: string): sortedSetStore
551+
552+
difference(storeKeys: Array<string>): Promise<Array<string>>;
553+
554+
intersection(storeKeys: Array<string>): Promise<Array<string>>;
555+
556+
union(storeKeys: Array<string>): Promise<Array<string>>;
557+
}
558+
559+
/**
560+
* @public
561+
*/
562+
interface sortedSetStore extends hiveStore {
563+
564+
add(items: Array<SortedSetItem>, options?: SortedSetItemOptionsI): Promise<number>
565+
566+
set(items: Array<SortedSetItem>, options?: SortedSetItemOptionsI): Promise<number>
567+
568+
incrementScore(value: string, scoreValue: number): Promise<number>
569+
570+
decrementScore(value: string, scoreValue: number): Promise<number>
571+
572+
getAndDeleteMaxScore(count?: number): Promise<Array<SortedSetItem>>
573+
574+
getAndDeleteMinScore(count?: number): Promise<Array<SortedSetItem>>
575+
576+
getRandom<T = SortedSetItem | string>(options?: { count?: number, withScores?: boolean }): Promise<Array<T>>
577+
578+
getScore(value: string): Promise<number>
579+
580+
getRank(value: string, reverse?: boolean): Promise<number>
581+
582+
getRangeByRank<T = SortedSetItem | string>(startRank: number, stopRank: number, options?: {
583+
reverse?: boolean,
584+
withScores?: boolean
585+
}): Promise<Array<T>>
586+
587+
getRangeByScore<T = SortedSetItem | string>(options?: {
588+
minScore?: number,
589+
maxScore?: number,
590+
minBound?: SortedSetBound,
591+
maxBound?: SortedSetBound,
592+
offset?: number,
593+
count?: number
594+
reverse?: boolean,
595+
withScores?: boolean
596+
}): Promise<Array<T>>
597+
598+
deleteValues(value: string): Promise<number>;
599+
600+
deleteValues(values: Array<string>): Promise<number>;
601+
602+
deleteValuesByRank(startRank: number, stopRank: number): Promise<number>;
603+
604+
deleteValuesByScore(options?: SortedSetFilterI): Promise<number>;
605+
606+
length(): Promise<number>;
607+
608+
countBetweenScores(options?: SortedSetFilterI): Promise<number>;
609+
}
610+
}
611+
280612
/**
281613
* @public
282614
* @namespace Backendless.UserService

src/hive/constants.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const HiveTypes = {
2+
KEY_VALUE : 'key-value',
3+
LIST : 'list',
4+
MAP : 'map',
5+
SET : 'set',
6+
SORTED_SET: 'sorted-set',
7+
}

0 commit comments

Comments
 (0)