7.1.14 • Published 9 months ago

@peerbit/document v7.1.14

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

Documents

Distributed document store.

This store is built on top of the base store. This store allows for type-safe document storage and retrieval accross peers.

As of now, go through the tests for documentation on how to use the module.

Example

import { field, option, serialize, variant } from "@dao-xyz/borsh";
import { Program } from "@peerbit/program";
import { Peerbit } from "peerbit";
import {
	Documents,
	DocumentIndex,
	SearchRequest,
	StringMatch,
	StringMatchMethod,
	Results,
} from "@peerbit/document";


@variant("document")
class Document {
    @field({ type: "string" })
    id: string;

    @field({ type: option("string") })
    name?: string;

    @field({ type: option("u64") })
    number?: bigint;

    constructor(opts?: Document) {
        if (opts) {
            Object.assign(this, opts);
        }
    }
}

@variant("test_documents")
class TestStore extends Program {
    @field({ type: Documents })
    docs: Documents<Document>;

    constructor(properties?: { docs: Documents<Document> }) {
        super();
        if (properties) {
            this.docs = properties.docs;
        }
    }
    async open(): Promise<void> {
        await this.docs.open({ 
			type: Document, 
			index: {
				fields: (obj) => obj // here you can filter and transform what fields you want to index
			}})
    }
}

// later 

const peer = await Peerbit.create ({libp2p: your_libp2p_instance})
const store = peer.open(new TestStore());
console.log(store.address) /// this address can be opened by another peer 


// insert
let doc = new Document({
    id: "1",
    name: "hello world",
    number: 1n,
});
let doc2 = new Document({
    id: "2",
    name: "hello world",
    number: 2n,
});

let doc3 = new Document({
    id: "3",
    name: "foo",
    number: 3n,
});

await store.docs.put(doc);
await store.docs.put(doc2);
await store.docs.put(doc3);


// search for documents from another peer
const peer2 = await Peerbit.create ({libp2: another_libp2p_instance})
const store2 = peer2.open(store.address);

let responses: Document[] = await store2.docs.index.search(
    new SearchRequest({
        query: [
          new StringMatch({
                key: "name",
                value: "ello",
				method: StringMatchMethod.contains
            }),
        ],
    })
);
expect(responses]).to.have.length(2);
expect(responses.map((x) => x.value.id)).to.deep.equal(["1", "2"]);
7.1.11-7295b96

9 months ago

7.1.13-c679a0d

9 months ago

7.1.11-8cf50a6

9 months ago

7.1.13-30333b6

9 months ago

7.1.11-81d59ee

9 months ago

7.1.14

9 months ago

7.1.12

9 months ago

7.1.13-8bec89f

9 months ago

7.1.12-1a3d976

9 months ago

7.1.11-9aa0186

9 months ago

7.1.11-c577601

9 months ago

7.1.10-5614dfb

9 months ago

7.1.10-b6f9aa8

9 months ago

7.1.11

9 months ago

7.1.9

9 months ago

7.1.8

9 months ago

7.1.9-9559b10

9 months ago

7.1.7-d83d7e7

9 months ago

7.1.9-a6d0306

9 months ago

7.1.10

9 months ago

7.1.9-e9a5cd4

9 months ago

7.1.8-01f2c90

9 months ago

7.1.7

9 months ago

7.1.6-737a4d7

9 months ago

7.1.1-88f45c3

10 months ago

7.1.6

9 months ago

7.1.5

9 months ago

7.1.4

9 months ago

7.1.5-2f48d18

9 months ago

7.1.3-0b8baa8

9 months ago

7.1.3

9 months ago

7.1.2

10 months ago

7.1.5-a2cffec

9 months ago

7.1.2-a3e5123

9 months ago

7.1.4-29dd1b8

9 months ago

7.0.8-7872365

11 months ago

7.0.1-eb9dc6e

12 months ago

7.0.14-ccaf4f4

11 months ago

7.0.6-a0a3f23

12 months ago

7.0.8

11 months ago

7.0.7

12 months ago

7.0.12-d66695a

11 months ago

7.0.6

12 months ago

7.0.5

12 months ago

7.0.9

11 months ago

7.0.1-ac53fba

12 months ago

7.1.0-57b8640

10 months ago

7.0.11-c07c1c7

11 months ago

7.0.5-171d517

12 months ago

7.0.0-3a75d6e

12 months ago

7.1.1-4ec760d

10 months ago

7.0.9-8c33ab6

11 months ago

7.0.8-b57d808

11 months ago

7.0.2-2bc15a6

12 months ago

7.0.0

12 months ago

7.0.5-65f11ae

12 months ago

7.0.4

12 months ago

7.0.3

12 months ago

7.0.4-bf3e3ed

12 months ago

7.0.2

12 months ago

7.0.1

12 months ago

7.0.5-2b760c3

12 months ago

7.0.12

11 months ago

7.0.13

11 months ago

7.0.11

11 months ago

7.0.7-2d408db

11 months ago

7.0.14

11 months ago

7.0.5-1d1274c

12 months ago

7.0.9-343b1fa

11 months ago

7.0.13-e1db01f

11 months ago

7.0.5-5901172

12 months ago

7.0.4-5b40851

12 months ago

7.1.1

10 months ago

7.1.0

11 months ago

7.0.0-934594a

12 months ago

7.0.9-325235b

11 months ago

7.0.9-4b0fbf1

11 months ago

6.0.7-cccc078

12 months ago

7.0.3-9e66213

12 months ago

7.0.5-372e20f

12 months ago

7.0.13-42268a2

11 months ago

7.0.7-a16b978

11 months ago

7.1.0-b064d22

11 months ago

7.0.7-5ed4c57

11 months ago

7.0.5-8b0cac0

12 months ago

7.0.3-5e0d4ec

12 months ago

7.0.10-61d3cec

11 months ago

7.0.0-55cebfe

12 months ago

6.0.7-aa577a5

1 year ago

6.0.7-0691c73

1 year ago

6.0.7-218a5bb

1 year ago

6.0.7-efee9d3

1 year ago

6.0.7-a9206a8

1 year ago

6.0.7-a4f88b6

1 year ago

6.0.7

1 year ago

6.0.6

1 year ago

6.0.3

1 year ago

6.0.2

1 year ago

6.0.5

1 year ago

6.0.4

1 year ago

6.0.1

1 year ago

6.0.0

1 year ago

5.0.8

1 year ago

5.0.7

1 year ago

5.0.6

1 year ago

5.0.5

1 year ago

5.0.4

1 year ago

5.0.3

1 year ago

5.0.2

1 year ago

5.0.1

1 year ago

4.1.9

1 year ago

5.0.0

1 year ago

4.1.8

1 year ago

4.1.7

1 year ago

4.1.6

1 year ago

4.1.5

1 year ago

4.1.4

1 year ago

4.1.3

1 year ago

4.1.2

1 year ago

4.1.1

1 year ago

4.0.12

1 year ago

4.0.11

2 years ago

4.1.0

1 year ago

4.0.10

2 years ago

4.0.9

2 years ago

4.0.8

2 years ago

4.0.5

2 years ago

4.0.7

2 years ago

4.0.6

2 years ago

4.0.4

2 years ago

4.0.1

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

3.2.0

2 years ago

3.1.11

2 years ago

3.1.10

2 years ago

3.1.9

2 years ago

3.1.8

2 years ago

3.1.7

2 years ago

3.1.6

2 years ago

3.1.5

2 years ago

3.1.4

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago