@tblabs/storage 2.0.1 → 5.0.0

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
@@ -1,19 +1,19 @@
1
1
  import { OnlineStorage } from "./OnlineStorage";
2
2
  import { IConverter } from "./IConverter";
3
3
  import { IRepo } from "./IRepo";
4
+ import { dir } from "./Types/dir";
4
5
  export declare class Dataset<T extends object> implements IRepo<T> {
5
6
  private _db;
6
7
  private _converter;
7
- private folder;
8
- constructor(_db: OnlineStorage, _converter: IConverter<any, T>, folder: string);
9
- private get FolderPath();
8
+ private dataset;
9
+ get Name(): string;
10
+ constructor(_db: OnlineStorage, _converter: IConverter<any, T>, dataset: dir);
11
+ private get DatasetPath();
10
12
  GetOne(id: string): Promise<T | null>;
11
13
  FindOne(id: string): Promise<T | null>;
12
14
  GetAll(): Promise<T[]>;
13
- GetAllIds(): Promise<string[]>;
14
15
  Add(id: string, item: T): Promise<void>;
15
16
  Update(id: string, item: T): Promise<void>;
16
17
  Delete(id: string): Promise<void>;
17
18
  Drop(): Promise<void>;
18
- Move(id: string, targetDataset: Dataset<any>): Promise<void>;
19
19
  }
package/Dataset.js CHANGED
@@ -3,29 +3,31 @@ import { DeleteCommand } from "./Messages/DeleteCommand";
3
3
  import { DropCommand } from "./Messages/DropCommand";
4
4
  import { FindQuery } from "./Messages/FindQuery";
5
5
  import { ListQuery } from "./Messages/ListQuery";
6
- import { MoveCommand } from "./Messages/MoveCommand";
7
- import { ReadQuery } from "./Messages/ReadQuery";
6
+ import { GetQuery } from "./Messages/GetQuery";
8
7
  import { UpdateCommand } from "./Messages/UpdateCommand";
9
8
  export class Dataset {
10
9
  _db;
11
10
  _converter;
12
- folder;
13
- constructor(_db, _converter, folder) {
11
+ dataset;
12
+ get Name() {
13
+ return this.dataset;
14
+ }
15
+ constructor(_db, _converter, dataset) {
14
16
  this._db = _db;
15
17
  this._converter = _converter;
16
- this.folder = folder;
18
+ this.dataset = dataset;
17
19
  }
18
- get FolderPath() {
19
- return this._db.DatabaseDir + "/" + this.folder;
20
+ get DatasetPath() {
21
+ return this._db.DatabaseDir + "/Datasets/" + this.dataset;
20
22
  }
21
23
  async GetOne(id) {
22
24
  this._db.Log(`Fetching "${id}"...`);
23
- const queryResult = await this._db.Send(new ReadQuery(id, this.FolderPath));
25
+ const queryResult = await this._db.Send(new GetQuery(this._db.DatabaseDir, this.dataset, id));
24
26
  if (!queryResult.IsSuccess) {
25
- this._db.Log(`Not found "${id}" in "${this.FolderPath}".`);
27
+ this._db.Log(`"${this.DatasetPath}/${id}" not found.`);
26
28
  return null;
27
29
  }
28
- this._db.Log(`Found "${id}" in "${this.FolderPath}".`);
30
+ this._db.Log(`Found "${id}" in "${this.DatasetPath}".`);
29
31
  const rawItem = queryResult.Result;
30
32
  const item = this._converter.FromRaw(rawItem);
31
33
  return item;
@@ -43,69 +45,62 @@ export class Dataset {
43
45
  return item;
44
46
  }
45
47
  async GetAll() {
46
- this._db.Log(`Fetching all from "${this._db.DatabaseDir}"...`);
47
- const queryResult = await this._db.Send(new ListQuery(this.FolderPath, true));
48
+ this._db.Log(`Fetching all from "${this.DatasetPath}"...`);
49
+ const queryResult = await this._db.Send(new ListQuery(this._db.DatabaseDir, this.dataset));
48
50
  if (!queryResult.IsSuccess) {
49
- this._db.Log(`Could not fetch all items from "${this.FolderPath}": ${queryResult.ErrorMessage}`);
51
+ this._db.Log(`Could not fetch items from "${this.DatasetPath}": ${queryResult.ErrorMessage}`);
50
52
  return [];
51
53
  }
52
54
  const rawItems = queryResult.Result;
53
55
  const items = rawItems.map((raw) => this._converter.FromRaw(raw));
54
- this._db.Log(`Fetched ${items.length} items from "${this.FolderPath}".`);
56
+ this._db.Log(`Fetched ${items.length} items from "${this.DatasetPath}".`);
55
57
  return items;
56
58
  }
57
- async GetAllIds() {
58
- this._db.Log(`Fetching all ids from "${this.FolderPath}"...`);
59
- const queryResult = await this._db.Send(new ListQuery(this.FolderPath, false));
60
- if (!queryResult.IsSuccess) {
61
- this._db.Log(`Could not fetch all ids from "${this.FolderPath}": ${queryResult.ErrorMessage}`);
62
- return [];
63
- }
64
- const itemsIds = Object.values(queryResult.Result);
65
- this._db.Log(`Fetched ${itemsIds.length} items ids from "${this.FolderPath}".`);
66
- return itemsIds;
67
- }
59
+ // public async GetAllIds(): Promise<string[]>
60
+ // {
61
+ // this._db.Log(`Fetching all ids from "${this.DatasetPath}"...`);
62
+ // const queryResult = await this._db.Send(new ListQuery(this.DatasetPath, false));
63
+ // if (!queryResult.IsSuccess)
64
+ // {
65
+ // this._db.Log(`Could not fetch all ids from "${this.DatasetPath}": ${queryResult.ErrorMessage}`);
66
+ // return [];
67
+ // }
68
+ // const itemsIds = Object.values(queryResult.Result);
69
+ // this._db.Log(`Fetched ${itemsIds.length} items ids from "${this.DatasetPath}".`);
70
+ // return itemsIds as string[];
71
+ // }
68
72
  async Add(id, item) {
69
- this._db.Log(`Adding "${id}" to "${this.FolderPath}"...`);
70
- const result = await this._db.Send(new AddCommand(id, this.FolderPath, item));
73
+ this._db.Log(`Adding "${id}" to "${this.DatasetPath}"...`);
74
+ const result = await this._db.Send(new AddCommand(this._db.DatabaseDir, this.dataset, id, item));
71
75
  if (!result.IsSuccess) {
72
- throw new Error(`Could not add "${id}" to "${this.FolderPath}": ${result.ErrorMessage}`);
76
+ throw new Error(`Could not add "${id}" to "${this.DatasetPath}": ${result.ErrorMessage}`);
73
77
  }
74
- this._db.Log(`"${id}" added to "${this.FolderPath}".`);
78
+ this._db.Log(`"${id}" added to "${this.DatasetPath}".`);
75
79
  }
76
80
  ;
77
81
  async Update(id, item) {
78
82
  this._db.Log(`Updating "${id}"...`);
79
- const result = await this._db.Send(new UpdateCommand(id, this.FolderPath, item));
83
+ const result = await this._db.Send(new UpdateCommand(this._db.DatabaseDir, this.dataset, id, item));
80
84
  if (!result.IsSuccess) {
81
- throw new Error(`Could not update "${id}" in "${this.FolderPath}": ${result.ErrorMessage}`);
85
+ throw new Error(`Could not update "${id}" in "${this.DatasetPath}": ${result.ErrorMessage}`);
82
86
  }
83
- this._db.Log(`"${id}" updated in "${this.FolderPath}".`);
87
+ this._db.Log(`"${id}" updated in "${this.DatasetPath}".`);
84
88
  }
85
89
  ;
86
90
  async Delete(id) {
87
- this._db.Log(`Deleting "${id}" from "${this.FolderPath}"...`);
88
- const result = await this._db.Send(new DeleteCommand(id, this.FolderPath));
91
+ this._db.Log(`Deleting "${id}" from "${this.DatasetPath}"...`);
92
+ const result = await this._db.Send(new DeleteCommand(this._db.DatabaseDir, this.dataset, id));
89
93
  if (!result.IsSuccess) {
90
- throw new Error(`Could not delete "${id}" from "${this.FolderPath}": ${result.ErrorMessage}`);
94
+ throw new Error(`Could not delete "${id}" from "${this.DatasetPath}": ${result.ErrorMessage}`);
91
95
  }
92
- this._db.Log(`Deleted "${id}" from "${this.FolderPath}".`);
96
+ this._db.Log(`Deleted "${id}" from "${this.DatasetPath}".`);
93
97
  }
94
98
  async Drop() {
95
- this._db.Log(`Dropping "${this.FolderPath}"...`);
96
- const result = await this._db.Send(new DropCommand(this.FolderPath));
99
+ this._db.Log(`Dropping "${this.DatasetPath}"...`);
100
+ const result = await this._db.Send(new DropCommand(this._db.DatabaseDir, this.dataset));
97
101
  if (!result.IsSuccess) {
98
- throw new Error(`Could not drop "${this.FolderPath}": ${result.ErrorMessage}`);
102
+ throw new Error(`Could not drop "${this.DatasetPath}": ${result.ErrorMessage}`);
99
103
  }
100
- this._db.Log(`Dropped "${this.FolderPath}".`);
101
- }
102
- async Move(id, targetDataset) {
103
- const source = this.FolderPath;
104
- const target = targetDataset.FolderPath;
105
- this._db.Log(`Moving "${id}" from "${source}" to "${target}"...`);
106
- const result = await this._db.Send(new MoveCommand(id, source, target));
107
- if (!result.IsSuccess)
108
- throw new Error(`Could not move "${id}" from "${source}" to "${target}": ${result.ErrorMessage}`);
109
- this._db.Log(`Moved "${id}" from "${source}" to "${target}".`);
104
+ this._db.Log(`"${this.DatasetPath}" dropped.`);
110
105
  }
111
106
  }
package/IRepo.d.ts CHANGED
@@ -3,9 +3,7 @@ export interface IRepo<T> {
3
3
  GetAll(): Promise<T[]>;
4
4
  GetOne(id: string): Promise<T | null>;
5
5
  FindOne(id: string): Promise<T | null>;
6
- GetAllIds(): Promise<string[]>;
7
6
  Update(id: string, item: T): Promise<void>;
8
7
  Delete(id: string): Promise<void>;
9
- Move(id: string, target: IRepo<any>): Promise<void>;
10
8
  Drop(): Promise<void>;
11
9
  }
@@ -1,4 +1,4 @@
1
1
  export interface IMessage {
2
2
  Name: string;
3
- Body?: any;
3
+ Body: any;
4
4
  }
@@ -1,4 +1,3 @@
1
1
  export interface ISender {
2
2
  Id: string;
3
- AuthToken?: string;
4
3
  }
@@ -1,5 +1,5 @@
1
1
  export declare class Message {
2
2
  Name: string;
3
- Body?: any | undefined;
4
- constructor(Name: string, Body?: any | undefined);
3
+ Body: any;
4
+ constructor(Name: string, Body: any);
5
5
  }
@@ -3,8 +3,10 @@ import { ISender } from './ISender';
3
3
  import { MessageBusResponse } from './MessageBusResponse';
4
4
  export declare class MessageBus {
5
5
  private serverUrl;
6
- private user?;
7
- constructor(serverUrl: string, user?: ISender | undefined);
6
+ private sender?;
7
+ constructor(serverUrl: string, sender?: ISender | undefined);
8
+ get Sender(): ISender | undefined;
9
+ SetSender(sender: ISender): this;
8
10
  SendMessage(message: IMessage): Promise<MessageBusResponse>;
9
11
  private PostJSON;
10
12
  Ping(): Promise<boolean>;
@@ -1,5 +1,4 @@
1
1
  import { MessageBusResponse } from './MessageBusResponse';
2
- import { MessagePackage } from './MessagePackage';
3
2
  /*
4
3
  SAMPLE POST:
5
4
 
@@ -20,15 +19,23 @@ import { MessagePackage } from './MessagePackage';
20
19
  */
21
20
  export class MessageBus {
22
21
  serverUrl;
23
- user;
24
- constructor(serverUrl, user) {
22
+ sender;
23
+ constructor(serverUrl, sender) {
25
24
  this.serverUrl = serverUrl;
26
- this.user = user;
25
+ this.sender = sender;
26
+ }
27
+ get Sender() {
28
+ return this.sender;
29
+ }
30
+ SetSender(sender) {
31
+ this.sender = sender;
32
+ return this;
27
33
  }
28
34
  async SendMessage(message) {
29
- let messagePackage = new MessagePackage();
30
- messagePackage.Message = message;
31
- messagePackage.Sender = this.user || { Id: "Anonymous" };
35
+ let messagePackage = {
36
+ Sender: this.sender || { Id: "Anonymous" },
37
+ Message: message
38
+ };
32
39
  return await this.SendMessagePackage(messagePackage);
33
40
  }
34
41
  async PostJSON(data) {
@@ -1,6 +1,6 @@
1
1
  import { IMessage } from "./IMessage";
2
2
  import { ISender } from "./ISender";
3
- export declare class MessagePackage {
4
- Sender?: ISender;
3
+ export interface MessagePackage {
4
+ Sender: ISender;
5
5
  Message: IMessage;
6
6
  }
@@ -1,4 +1 @@
1
- export class MessagePackage {
2
- Sender;
3
- Message;
4
- }
1
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class AddCommand extends Message {
3
- constructor(Id: string, Folder: string, Content: object);
4
+ constructor(Database: dir, Dataset: dir, FileId: string, Content: object);
4
5
  }
@@ -1,12 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class AddCommand extends Message {
3
- constructor(Id, Folder, Content) {
4
- if (!Id) {
5
- throw new Error(`Id not specified!`);
6
- }
7
- if (!Folder) {
8
- throw new Error(`Folder not specified!`);
9
- }
10
- super("Add", { Id, Folder, Content });
3
+ constructor(Database, Dataset, FileId, Content) {
4
+ super("Add", { Database, Dataset, FileId, Content });
11
5
  }
12
6
  }
@@ -1,4 +1,11 @@
1
1
  import { Message } from '../MessageBus/Message';
2
- export declare class AddDirCommand extends Message {
3
- constructor(Folder: string);
2
+ import { dir } from '../Types/dir';
3
+ export declare class CreateCommand extends Message {
4
+ constructor(Database: dir, Dataset: dir);
5
+ }
6
+ export declare class ExistsCommand extends Message {
7
+ constructor(Database: dir, Dataset: dir);
8
+ }
9
+ export declare class RemoveCommand extends Message {
10
+ constructor(Database: dir, Dataset: dir);
4
11
  }
@@ -1,6 +1,16 @@
1
1
  import { Message } from '../MessageBus/Message';
2
- export class AddDirCommand extends Message {
3
- constructor(Folder) {
4
- super("AddDir", { Folder });
2
+ export class CreateCommand extends Message {
3
+ constructor(Database, Dataset) {
4
+ super("Create", { Database, Dataset });
5
+ }
6
+ }
7
+ export class ExistsCommand extends Message {
8
+ constructor(Database, Dataset) {
9
+ super("Exists", { Database, Dataset });
10
+ }
11
+ }
12
+ export class RemoveCommand extends Message {
13
+ constructor(Database, Dataset) {
14
+ super("Remove", { Database, Dataset });
5
15
  }
6
16
  }
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class DeleteCommand extends Message {
3
- constructor(Id: string, Folder: string);
4
+ constructor(Database: dir, Dataset: dir, FileId: string);
4
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class DeleteCommand extends Message {
3
- constructor(Id, Folder) {
4
- super("Delete", { Id, Folder });
3
+ constructor(Database, Dataset, FileId) {
4
+ super("Delete", { Database, Dataset, FileId });
5
5
  }
6
6
  }
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class DropCommand extends Message {
3
- constructor(Folder: string);
4
+ constructor(Database: dir, Dataset: dir);
4
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class DropCommand extends Message {
3
- constructor(Folder) {
4
- super("Drop", { Folder });
3
+ constructor(Database, Dataset) {
4
+ super("Drop", { Database, Dataset });
5
5
  }
6
6
  }
@@ -0,0 +1,5 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
3
+ export declare class GetQuery extends Message {
4
+ constructor(Database: dir, Dataset: dir, FileId: string);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class GetQuery extends Message {
3
+ constructor(Database, Dataset, FileId) {
4
+ super("Get", { Database, Dataset, FileId });
5
+ }
6
+ }
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class ListQuery extends Message {
3
- constructor(Folder: string, AttachFilesContent: boolean);
4
+ constructor(Database: dir, Dataset: dir);
4
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class ListQuery extends Message {
3
- constructor(Folder, AttachFilesContent) {
4
- super("List", { Folder, AttachFilesContent });
3
+ constructor(Database, Dataset) {
4
+ super("List", { Database, Dataset });
5
5
  }
6
6
  }
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class MoveCommand extends Message {
3
- constructor(Id: string, From: string, To: string);
4
+ constructor(Database: dir, FileId: string, Source: dir, Target: dir);
4
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class MoveCommand extends Message {
3
- constructor(Id, From, To) {
4
- super("Move", { Id, From, To });
3
+ constructor(Database, FileId, Source, Target) {
4
+ super("Move", { Database, FileId, Source, Target });
5
5
  }
6
6
  }
@@ -1,4 +1,5 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
2
3
  export declare class UpdateCommand extends Message {
3
- constructor(Id: string, Folder: string, Content: object);
4
+ constructor(Database: dir, Dataset: dir, FileId: string, Content: object);
4
5
  }
@@ -1,6 +1,6 @@
1
1
  import { Message } from '../MessageBus/Message';
2
2
  export class UpdateCommand extends Message {
3
- constructor(Id, Folder, Content) {
4
- super("Update", { Id, Folder, Content });
3
+ constructor(Database, Dataset, FileId, Content) {
4
+ super("Update", { Database, Dataset, FileId, Content });
5
5
  }
6
6
  }
@@ -1,17 +1,77 @@
1
+ import { dir, url } from "./Types/dir";
1
2
  import { IMessage } from "./MessageBus/IMessage";
2
3
  import { ISender } from "./MessageBus/ISender";
4
+ import { MessageBus } from "./MessageBus/MessageBus";
3
5
  import { MessageBusResponse } from "./MessageBus/MessageBusResponse";
6
+ import { Message } from "./MessageBus/Message";
7
+ import { Dataset } from "./Dataset";
8
+ export type IEntitiesSet = string[] | "all" | "none";
9
+ export interface IUser {
10
+ Id: string;
11
+ Name: string;
12
+ Database: string;
13
+ Privileges: {
14
+ Add: {
15
+ Datasets: IEntitiesSet;
16
+ };
17
+ Update: {
18
+ Datasets: IEntitiesSet;
19
+ Files: IEntitiesSet;
20
+ };
21
+ Delete: {
22
+ Datasets: IEntitiesSet;
23
+ Files: IEntitiesSet;
24
+ };
25
+ List: {
26
+ Datasets: IEntitiesSet;
27
+ };
28
+ Get: {
29
+ Files: IEntitiesSet;
30
+ };
31
+ Drop: {
32
+ Datasets: IEntitiesSet;
33
+ };
34
+ Move: {
35
+ Datasets: IEntitiesSet;
36
+ Files: IEntitiesSet;
37
+ };
38
+ Backup: {
39
+ Datasets: IEntitiesSet;
40
+ };
41
+ Find: {
42
+ Files: IEntitiesSet;
43
+ };
44
+ Create: {
45
+ Datasets: IEntitiesSet;
46
+ };
47
+ Exists: {
48
+ Datasets: IEntitiesSet;
49
+ };
50
+ Remove: {
51
+ Datasets: IEntitiesSet;
52
+ };
53
+ };
54
+ }
55
+ export declare class AuthQuery extends Message {
56
+ constructor(Database: dir, Password: string);
57
+ }
4
58
  export declare class OnlineStorage {
5
- private databaseFolder;
6
- private access;
59
+ private database;
7
60
  private logEnabled;
8
61
  private readonly _bus;
9
- get DatabaseDir(): string;
10
- constructor(serverUrl: string, databaseFolder: string, access: ISender);
11
- EnableLog(): void;
12
- DisableLog(): void;
62
+ get DatabaseDir(): dir;
63
+ constructor(server: url, database: dir, sender?: ISender, bus?: MessageBus);
64
+ Login(password: string): Promise<IUser>;
65
+ Logout(): this;
66
+ IsAuthorized(): boolean;
67
+ User(access: ISender): this;
68
+ EnableLog(): this;
69
+ DisableLog(): this;
13
70
  Log(...message: any[]): void;
14
71
  Ping(): Promise<boolean>;
15
72
  Send(message: IMessage): Promise<MessageBusResponse>;
16
- AddDataset(datasetName: string): Promise<void>;
73
+ CreateDataset(datasetName: string): Promise<void>;
74
+ DatasetExists(datasetName: string): Promise<boolean>;
75
+ RemoveDataset(datasetName: string): Promise<void>;
76
+ Move(fileId: string, sourceDataset: Dataset<any>, targetDataset: Dataset<any>): Promise<void>;
17
77
  }
package/OnlineStorage.js CHANGED
@@ -1,27 +1,55 @@
1
1
  import { MessageBus } from "./MessageBus/MessageBus";
2
- import { AddDirCommand } from "./Messages/AddDirCommand";
2
+ import { CreateCommand, ExistsCommand, RemoveCommand } from "./Messages/AddDirCommand";
3
+ import { Message } from "./MessageBus/Message";
4
+ import { MoveCommand } from "./Messages/MoveCommand";
5
+ export class AuthQuery extends Message {
6
+ constructor(Database, Password) {
7
+ super("LoginUser", { Database, Password });
8
+ }
9
+ }
3
10
  export class OnlineStorage {
4
- databaseFolder;
5
- access;
11
+ database;
6
12
  logEnabled = false;
7
13
  _bus;
8
14
  get DatabaseDir() {
9
- return this.databaseFolder;
15
+ return this.database;
16
+ }
17
+ constructor(server, database, sender = { Id: "Anonymous" }, bus) {
18
+ this.database = database;
19
+ this._bus = bus || new MessageBus(server, sender);
10
20
  }
11
- constructor(serverUrl, databaseFolder, access) {
12
- this.databaseFolder = databaseFolder;
13
- this.access = access;
14
- this._bus = new MessageBus(serverUrl, access);
21
+ async Login(password) {
22
+ const result = await this._bus.SendMessage(new AuthQuery(this.DatabaseDir, password));
23
+ if (!result.IsSuccess) {
24
+ throw new Error(`Could not login: ${result.ErrorMessage}`);
25
+ }
26
+ const user = result.Result;
27
+ this.User({ Id: user?.Id ?? "Anonymous" });
28
+ return user;
29
+ }
30
+ Logout() {
31
+ this.User({ Id: "Anonymous" });
32
+ return this;
33
+ }
34
+ IsAuthorized() {
35
+ return this._bus.Sender?.Id !== "Anonymous";
36
+ }
37
+ User(access) {
38
+ this._bus.SetSender(access);
39
+ return this;
15
40
  }
16
41
  EnableLog() {
17
42
  this.logEnabled = true;
43
+ return this;
18
44
  }
19
45
  DisableLog() {
20
46
  this.logEnabled = false;
47
+ return this;
21
48
  }
22
49
  Log(...message) {
23
- if (this.logEnabled)
24
- console.log('[OnlineRepo]', ...message);
50
+ if (this.logEnabled) {
51
+ console.log('[Storage]', ...message);
52
+ }
25
53
  }
26
54
  async Ping() {
27
55
  return await this._bus.Ping();
@@ -29,13 +57,37 @@ export class OnlineStorage {
29
57
  async Send(message) {
30
58
  return await this._bus.SendMessage(message);
31
59
  }
32
- async AddDataset(datasetName) {
33
- const target = this.DatabaseDir + "/" + datasetName;
34
- this.Log(`Creating dataset directory "${target}"...`);
35
- const result = await this._bus.SendMessage(new AddDirCommand(target));
60
+ async CreateDataset(datasetName) {
61
+ this.Log(`Creating dataset "${datasetName}"...`);
62
+ const result = await this._bus.SendMessage(new CreateCommand(this.DatabaseDir, datasetName));
63
+ if (!result.IsSuccess) {
64
+ throw new Error(`Could not add dataset "${datasetName}": ${result.ErrorMessage}`);
65
+ }
66
+ this.Log(`Dataset "${datasetName}" created.`);
67
+ }
68
+ async DatasetExists(datasetName) {
69
+ this.Log(`Checking if dataset "${datasetName}" exists...`);
70
+ const result = await this._bus.SendMessage(new ExistsCommand(this.DatabaseDir, datasetName));
71
+ if (!result.IsSuccess) {
72
+ throw new Error(`Could not check if dataset "${datasetName}" exists: ${result.ErrorMessage}`);
73
+ }
74
+ this.Log(`Dataset "${datasetName}" ${result.Result ? "exists" : "does not exist"}.`);
75
+ return result.Result;
76
+ }
77
+ async RemoveDataset(datasetName) {
78
+ this.Log(`Removing dataset "${datasetName}"...`);
79
+ const result = await this._bus.SendMessage(new RemoveCommand(this.DatabaseDir, datasetName));
80
+ if (!result.IsSuccess) {
81
+ throw new Error(`Could not remove dataset "${datasetName}": ${result.ErrorMessage}`);
82
+ }
83
+ this.Log(`Dataset "${datasetName}" removed.`);
84
+ }
85
+ async Move(fileId, sourceDataset, targetDataset) {
86
+ this.Log(`Moving "${fileId}" from "${sourceDataset.Name}" to "${targetDataset.Name}"...`);
87
+ const result = await this._bus.SendMessage(new MoveCommand(this.DatabaseDir, fileId, sourceDataset.Name, targetDataset.Name));
36
88
  if (!result.IsSuccess) {
37
- throw new Error(`Could not add directory "${target}": ${result.ErrorMessage}`);
89
+ throw new Error(`Could not move "${fileId}" from "${sourceDataset.Name}" to "${targetDataset.Name}": ${result.ErrorMessage}`);
38
90
  }
39
- this.Log(`Directory "${target}" added.`);
91
+ this.Log(`"${fileId}" moved from "${sourceDataset.Name}" to "${targetDataset.Name}".`);
40
92
  }
41
93
  }
package/Types/dir.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export type dir = string;
2
+ export type url = string;
package/Types/dir.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export * from "./IRepo";
1
+ export * from "./Types/dir";
2
2
  export * from "./IConverter";
3
- export * from "./OnlineStorage";
4
- export * from "./Utils/OperationRepeater";
5
3
  export * from "./Converter";
4
+ export * from "./IRepo";
6
5
  export * from "./Dataset";
6
+ export * from "./OnlineStorage";
7
+ export * from "./Utils/OperationRepeater";
package/index.js CHANGED
@@ -1,6 +1,7 @@
1
- export * from "./IRepo";
1
+ export * from "./Types/dir";
2
2
  export * from "./IConverter";
3
- export * from "./OnlineStorage";
4
- export * from "./Utils/OperationRepeater";
5
3
  export * from "./Converter";
4
+ export * from "./IRepo";
6
5
  export * from "./Dataset";
6
+ export * from "./OnlineStorage";
7
+ export * from "./Utils/OperationRepeater";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tblabs/storage",
3
- "version": "2.0.1",
4
- "description": "online storage module",
3
+ "version": "5.0.0",
4
+ "description": "online storage module with auth",
5
5
  "license": "beerware",
6
6
  "main": "index.js",
7
7
  "types": "index.d.ts",
@@ -9,7 +9,7 @@
9
9
  "pack": "cd ./bin && npm pack",
10
10
  "clean": "rm ./bin -rf && rm *.tgz -rf",
11
11
  "build": "npm run clean && tsc ./src/index.ts --declaration --outDir ./bin && cp ./package.json ./bin/package.json",
12
- "publish:npm": "npm run build &&npm login && npm run pack && cd ./bin && npm publish --access public"
12
+ "publish:npm": "npm run build && npm login && npm run pack && cd ./bin && npm publish --access public"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/jest": "^30.0.0",
Binary file
@@ -1,4 +0,0 @@
1
- import { Message } from '../MessageBus/Message';
2
- export declare class ReadQuery extends Message {
3
- constructor(Id: string, Folder: string);
4
- }
@@ -1,6 +0,0 @@
1
- import { Message } from '../MessageBus/Message';
2
- export class ReadQuery extends Message {
3
- constructor(Id, Folder) {
4
- super("Read", { Id, Folder });
5
- }
6
- }
Binary file