@tblabs/storage 5.3.1 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Dataset.d.ts CHANGED
@@ -13,6 +13,7 @@ export declare class Dataset<T extends object> implements IRepo<T> {
13
13
  CanUserDo(action: keyof IStorageUserPrivileges): boolean;
14
14
  GetOne(id: string): Promise<T>;
15
15
  GetAll(): Promise<T[]>;
16
+ GetAllIds(): Promise<string[]>;
16
17
  Add(id: string, item: T): Promise<void>;
17
18
  Update(id: string, item: T): Promise<void>;
18
19
  Delete(id: string): Promise<void>;
package/Dataset.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AddCommand } from "./Messages/AddCommand";
2
2
  import { DeleteCommand } from "./Messages/DeleteCommand";
3
3
  import { DropCommand } from "./Messages/DropCommand";
4
- import { ListQuery } from "./Messages/ListQuery";
4
+ import { ListIdsQuery, ListQuery } from "./Messages/ListQuery";
5
5
  import { GetQuery } from "./Messages/GetQuery";
6
6
  import { UpdateCommand } from "./Messages/UpdateCommand";
7
7
  export class Dataset {
@@ -47,6 +47,13 @@ export class Dataset {
47
47
  this._db.Log(`Fetched ${items.length} items from "${this.DatasetPath}".`);
48
48
  return items;
49
49
  }
50
+ async GetAllIds() {
51
+ this._db.Log(`Fetching all files IDs from "${this.DatasetPath}"...`);
52
+ const queryResult = await this._db.Send(new ListIdsQuery(this._db.DatabaseDir, this.dataset));
53
+ const ids = queryResult.Result;
54
+ this._db.Log(`Found ${ids.length} files in "${this.DatasetPath}".`);
55
+ return ids;
56
+ }
50
57
  async Add(id, item) {
51
58
  this._db.Log(`Adding "${id}" to "${this.DatasetPath}"...`);
52
59
  const rawItem = this._converter.ToRaw(item);
@@ -37,5 +37,8 @@ export interface IStorageUserPrivileges {
37
37
  Search: {
38
38
  Datasets: IEntitiesSet;
39
39
  };
40
- Register: boolean;
40
+ UserList: boolean;
41
+ UserUpdate: boolean;
42
+ UserAdd: boolean;
43
+ UserDelete: boolean;
41
44
  }
@@ -3,3 +3,6 @@ import { dir } from '../Types/dir';
3
3
  export declare class ListQuery extends Message {
4
4
  constructor(Database: dir, Dataset: dir);
5
5
  }
6
+ export declare class ListIdsQuery extends Message {
7
+ constructor(Database: dir, Dataset: dir);
8
+ }
@@ -4,3 +4,8 @@ export class ListQuery extends Message {
4
4
  super("List", { Database, Dataset });
5
5
  }
6
6
  }
7
+ export class ListIdsQuery extends Message {
8
+ constructor(Database, Dataset) {
9
+ super("ListIds", { Database, Dataset });
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ import { IStorageUser } from '../IStorageUser';
2
+ import { Message } from '../MessageBus/Message';
3
+ import { dir } from '../Types/dir';
4
+ export declare class UserAddCommand extends Message {
5
+ constructor(Database: dir, User: IStorageUser);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class UserAddCommand extends Message {
3
+ constructor(Database, User) {
4
+ super("UserAdd", { Database, User });
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
3
+ export declare class UserDeleteCommand extends Message {
4
+ constructor(Database: dir, UserId: string);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class UserDeleteCommand extends Message {
3
+ constructor(Database, UserId) {
4
+ super("UserDelete", { Database, UserId });
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
3
+ export declare class UserGetQuery extends Message {
4
+ constructor(Database: dir, UserId: string);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class UserGetQuery extends Message {
3
+ constructor(Database, UserId) {
4
+ super("UserGet", { Database, UserId });
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ import { IStorageUser } from '../IStorageUser';
2
+ import { Message } from '../MessageBus/Message';
3
+ import { dir } from '../Types/dir';
4
+ export declare class UserUpdateCommand extends Message {
5
+ constructor(Database: dir, User: IStorageUser);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class UserUpdateCommand extends Message {
3
+ constructor(Database, User) {
4
+ super("UserUpdate", { Database, User });
5
+ }
6
+ }
@@ -7,6 +7,7 @@ import { Dataset } from "./Dataset";
7
7
  import { IStorageUser } from "./IStorageUser";
8
8
  import { IConverter } from "./IConverter";
9
9
  export declare class OnlineStorage {
10
+ private server;
10
11
  private database;
11
12
  private ANONYMOUS_USER;
12
13
  private user;
@@ -14,12 +15,17 @@ export declare class OnlineStorage {
14
15
  private readonly _bus;
15
16
  private onUserChange;
16
17
  private USER_LOCAL_STORAGE_KEY;
18
+ get Server(): string;
17
19
  get DatabaseDir(): dir;
18
20
  constructor(server: url, database: dir, sender?: ISender, bus?: MessageBus);
19
21
  SetServer(server: url): this;
20
22
  SetDatabase(database: dir): this;
21
23
  ListDatasets(): Promise<string[]>;
22
24
  ListUsers(): Promise<IStorageUser[]>;
25
+ GetUser(userId: string): Promise<IStorageUser>;
26
+ AddUser(user: IStorageUser): Promise<void>;
27
+ UpdateUser(user: IStorageUser): Promise<void>;
28
+ DeleteUser(user: IStorageUser): Promise<void>;
23
29
  GetDataset<T extends object>(datasetName: string, converter: IConverter<any, T>): Dataset<T>;
24
30
  private IsBrowserEnvironment;
25
31
  private LoadUserFromLocalStorage;
package/OnlineStorage.js CHANGED
@@ -5,7 +5,12 @@ import { MoveCommand } from "./Messages/MoveCommand";
5
5
  import { LoginQuery } from "./Messages/LoginQuery";
6
6
  import { ListUsersQuery } from "./Messages/ListUsersQuery";
7
7
  import { ListDatasetsQuery } from "./Messages/ListDatabasesQuery";
8
+ import { UserUpdateCommand } from "./Messages/UserUpdateCommand";
9
+ import { UserAddCommand } from "./Messages/UserAddCommand";
10
+ import { UserDeleteCommand } from "./Messages/UserDeleteCommand";
11
+ import { UserGetQuery } from "./Messages/UserGetQuery";
8
12
  export class OnlineStorage {
13
+ server;
9
14
  database;
10
15
  ANONYMOUS_USER = { Id: "Anonymous" };
11
16
  user = this.ANONYMOUS_USER;
@@ -13,10 +18,14 @@ export class OnlineStorage {
13
18
  _bus;
14
19
  onUserChange = [];
15
20
  USER_LOCAL_STORAGE_KEY = "";
21
+ get Server() {
22
+ return this.server;
23
+ }
16
24
  get DatabaseDir() {
17
25
  return this.database;
18
26
  }
19
27
  constructor(server, database, sender = this.ANONYMOUS_USER, bus) {
28
+ this.server = server;
20
29
  this.database = database;
21
30
  this._bus = bus || new MessageBus(server, sender);
22
31
  this.USER_LOCAL_STORAGE_KEY = "OnlineStorage:User:" + this.database;
@@ -47,6 +56,31 @@ export class OnlineStorage {
47
56
  }
48
57
  return result.Result;
49
58
  }
59
+ async GetUser(userId) {
60
+ const result = await this._bus.SendMessage(new UserGetQuery(this.DatabaseDir, userId));
61
+ if (!result.IsSuccess) {
62
+ throw new Error(`Could not get user: ${result.ErrorMessage}`);
63
+ }
64
+ return result.Result;
65
+ }
66
+ async AddUser(user) {
67
+ this.Log(`Adding user "${user.Id}"...`);
68
+ await this._bus.SendMessage(new UserAddCommand(this.DatabaseDir, user));
69
+ this.Log(`User "${user.Id}" added.`);
70
+ }
71
+ ;
72
+ async UpdateUser(user) {
73
+ this.Log(`Updating user "${user.Id}"...`);
74
+ await this._bus.SendMessage(new UserUpdateCommand(this.DatabaseDir, user));
75
+ this.Log(`User "${user.Id}" updated.`);
76
+ }
77
+ ;
78
+ async DeleteUser(user) {
79
+ this.Log(`Deleting user "${user.Id}"...`);
80
+ await this._bus.SendMessage(new UserDeleteCommand(this.DatabaseDir, user.Id));
81
+ this.Log(`User "${user.Id}" deleted.`);
82
+ }
83
+ ;
50
84
  GetDataset(datasetName, converter) {
51
85
  return new Dataset(this, converter, datasetName);
52
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tblabs/storage",
3
- "version": "5.3.1",
3
+ "version": "5.4.1",
4
4
  "description": "online storage module with auth",
5
5
  "license": "beerware",
6
6
  "main": "index.js",
Binary file
Binary file