@tblabs/storage 5.8.3 → 5.9.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,9 +13,12 @@ export declare class Dataset<T extends object> implements IRepo<T> {
13
13
  private get DatasetPath();
14
14
  CanUserDo(action: keyof IStorageUserPrivileges): boolean;
15
15
  GetOne(id: string): Promise<T>;
16
+ Read(id: string, offset?: number, limit?: number): Promise<string>;
16
17
  GetAll(): Promise<T[]>;
17
18
  GetAllIds(): Promise<string[]>;
18
19
  Add(id: string, item: T): Promise<void>;
20
+ Append(id: string, text: string): Promise<void>;
21
+ AppendLine(id: string, line: string): Promise<void>;
19
22
  Update(id: string, item: T): Promise<void>;
20
23
  Delete(id: string): Promise<void>;
21
24
  Drop(): Promise<void>;
package/Dataset.js CHANGED
@@ -5,6 +5,8 @@ import { ListFilesQuery } from "./Messages/ListFilesQuery";
5
5
  import { GetFileQuery } from "./Messages/GetFileQuery";
6
6
  import { UpdateFileCommand } from "./Messages/UpdateFileCommand";
7
7
  import { ListFilesIdsQuery } from "./Messages/ListFilesIdsQuery";
8
+ import { AppendCommand } from "./Messages/AppendCommand";
9
+ import { ReadFileQuery } from "./Messages/ReadFileQuery";
8
10
  export class Dataset {
9
11
  _db;
10
12
  _converter;
@@ -46,6 +48,16 @@ export class Dataset {
46
48
  this._db.Log(`Fetched "${id}" from "${this.DatasetPath}".`);
47
49
  return item;
48
50
  }
51
+ async Read(id, offset = 0, limit = 0) {
52
+ this._db.Log(`Reading "${id}" from "${this.DatasetPath}"...`);
53
+ const queryResult = await this._db.Send(new ReadFileQuery(this._db.DatabaseDir, this.dataset, id, offset, limit));
54
+ if (!queryResult.IsSuccess) {
55
+ throw new Error("Failed to read: " + queryResult.ErrorMessage);
56
+ }
57
+ const content = queryResult.Result;
58
+ this._db.Log(`Read ${content.length} characters from "${id}" in "${this.DatasetPath}".`);
59
+ return content;
60
+ }
49
61
  async GetAll() {
50
62
  this._db.Log(`Fetching all from "${this.DatasetPath}"...`);
51
63
  const queryResult = await this._db.Send(new ListFilesQuery(this._db.DatabaseDir, this.dataset));
@@ -77,6 +89,18 @@ export class Dataset {
77
89
  this._db.Log(`"${id}" added to "${this.DatasetPath}".`);
78
90
  }
79
91
  ;
92
+ async Append(id, text) {
93
+ this._db.Log(`Appending ${text.length} characters to "${id}" in "${this.DatasetPath}"...`);
94
+ const result = await this._db.Send(new AppendCommand(this._db.DatabaseDir, this.dataset, id, text));
95
+ if (!result.IsSuccess) {
96
+ throw new Error("Failed to append: " + result.ErrorMessage);
97
+ }
98
+ this._db.Log(`${text.length} characters appended to "${id}" in "${this.DatasetPath}".`);
99
+ }
100
+ ;
101
+ async AppendLine(id, line) {
102
+ await this.Append(id, line + "\n");
103
+ }
80
104
  async Update(id, item) {
81
105
  this._db.Log(`Updating "${id}"...`);
82
106
  const rawItem = this._converter.ToRaw(item);
@@ -0,0 +1,5 @@
1
+ import { IConverter } from "./IConverter";
2
+ export declare class DummyConverter implements IConverter<any, any> {
3
+ FromRaw(raw: any): any;
4
+ ToRaw(item: any): any;
5
+ }
@@ -0,0 +1,8 @@
1
+ export class DummyConverter {
2
+ FromRaw(raw) {
3
+ return raw;
4
+ }
5
+ ToRaw(item) {
6
+ return item;
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
3
+ export declare class AppendCommand extends Message {
4
+ constructor(Database: dir, Dataset: dir, FileId: string, Content: string);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class AppendCommand extends Message {
3
+ constructor(Database, Dataset, FileId, Content) {
4
+ super("Append", { Database, Dataset, FileId, Content });
5
+ }
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ import { dir } from '../Types/dir';
3
+ export declare class ReadFileQuery extends Message {
4
+ constructor(Database: dir, Dataset: dir, FileId: string, Offset?: number, Limit?: number);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { Message } from '../MessageBus/Message';
2
+ export class ReadFileQuery extends Message {
3
+ constructor(Database, Dataset, FileId, Offset = 0, Limit = 0) {
4
+ super("ReadFile", { Database, Dataset, FileId, Offset, Limit });
5
+ }
6
+ }
package/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./IEntitiesSet";
4
4
  export * from "./IStorageUser";
5
5
  export * from "./IConverter";
6
6
  export * from "./Converter";
7
+ export * from "./DummyConverter";
7
8
  export * from "./IRepo";
8
9
  export * from "./IRepos";
9
10
  export * from "./Dataset";
package/index.js CHANGED
@@ -4,6 +4,7 @@ export * from "./IEntitiesSet";
4
4
  export * from "./IStorageUser";
5
5
  export * from "./IConverter";
6
6
  export * from "./Converter";
7
+ export * from "./DummyConverter";
7
8
  export * from "./IRepo";
8
9
  export * from "./IRepos";
9
10
  export * from "./Dataset";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tblabs/storage",
3
- "version": "5.8.3",
3
+ "version": "5.9.1",
4
4
  "description": "online storage module with auth",
5
5
  "license": "beerware",
6
6
  "main": "index.js",
Binary file
Binary file