7.1.14 • Published 8 months ago

@peerbit/document v7.1.14

Weekly downloads
-
License
MIT
Repository
-
Last release
8 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

8 months ago

7.1.13-c679a0d

8 months ago

7.1.11-8cf50a6

8 months ago

7.1.13-30333b6

8 months ago

7.1.11-81d59ee

8 months ago

7.1.14

8 months ago

7.1.12

8 months ago

7.1.13-8bec89f

8 months ago

7.1.12-1a3d976

8 months ago

7.1.11-9aa0186

8 months ago

7.1.11-c577601

8 months ago

7.1.10-5614dfb

8 months ago

7.1.10-b6f9aa8

8 months ago

7.1.11

8 months ago

7.1.9

8 months ago

7.1.8

8 months ago

7.1.9-9559b10

8 months ago

7.1.7-d83d7e7

8 months ago

7.1.9-a6d0306

8 months ago

7.1.10

8 months ago

7.1.9-e9a5cd4

8 months ago

7.1.8-01f2c90

8 months ago

7.1.7

8 months ago

7.1.6-737a4d7

8 months ago

7.1.1-88f45c3

9 months ago

7.1.6

8 months ago

7.1.5

8 months ago

7.1.4

8 months ago

7.1.5-2f48d18

8 months ago

7.1.3-0b8baa8

8 months ago

7.1.3

8 months ago

7.1.2

9 months ago

7.1.5-a2cffec

8 months ago

7.1.2-a3e5123

8 months ago

7.1.4-29dd1b8

8 months ago

7.0.8-7872365

10 months ago

7.0.1-eb9dc6e

11 months ago

7.0.14-ccaf4f4

10 months ago

7.0.6-a0a3f23

11 months ago

7.0.8

10 months ago

7.0.7

11 months ago

7.0.12-d66695a

10 months ago

7.0.6

11 months ago

7.0.5

11 months ago

7.0.9

10 months ago

7.0.1-ac53fba

11 months ago

7.1.0-57b8640

10 months ago

7.0.11-c07c1c7

10 months ago

7.0.5-171d517

11 months ago

7.0.0-3a75d6e

11 months ago

7.1.1-4ec760d

10 months ago

7.0.9-8c33ab6

10 months ago

7.0.8-b57d808

10 months ago

7.0.2-2bc15a6

11 months ago

7.0.0

11 months ago

7.0.5-65f11ae

11 months ago

7.0.4

11 months ago

7.0.3

11 months ago

7.0.4-bf3e3ed

11 months ago

7.0.2

11 months ago

7.0.1

11 months ago

7.0.5-2b760c3

11 months ago

7.0.12

10 months ago

7.0.13

10 months ago

7.0.11

10 months ago

7.0.7-2d408db

11 months ago

7.0.14

10 months ago

7.0.5-1d1274c

11 months ago

7.0.9-343b1fa

10 months ago

7.0.13-e1db01f

10 months ago

7.0.5-5901172

11 months ago

7.0.4-5b40851

11 months ago

7.1.1

10 months ago

7.1.0

10 months ago

7.0.0-934594a

11 months ago

7.0.9-325235b

10 months ago

7.0.9-4b0fbf1

10 months ago

6.0.7-cccc078

11 months ago

7.0.3-9e66213

11 months ago

7.0.5-372e20f

11 months ago

7.0.13-42268a2

10 months ago

7.0.7-a16b978

11 months ago

7.1.0-b064d22

10 months ago

7.0.7-5ed4c57

10 months ago

7.0.5-8b0cac0

11 months ago

7.0.3-5e0d4ec

11 months ago

7.0.10-61d3cec

10 months ago

7.0.0-55cebfe

11 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

1 year ago

4.1.0

1 year ago

4.0.10

1 year ago

4.0.9

1 year ago

4.0.8

1 year ago

4.0.5

1 year ago

4.0.7

1 year ago

4.0.6

1 year ago

4.0.4

1 year ago

4.0.1

1 year ago

4.0.3

1 year ago

4.0.2

1 year 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