@sealcode/cosealious

Helper functions for Sealious-made API

Usage no npm install needed!

<script type="module">
  import sealcodeCosealious from 'https://cdn.skypack.dev/@sealcode/cosealious';
</script>

README

Cosealious

Helper for using REST APIs build with Sealious in the web, with React hooks

Usage

Describe a collection

First, you need to tell Coselaious what is the structure of the collections on the back-end.

import {CollectionItem, CollectionClient} from "@sealcode/cosealious";

const MyCollectionFields = {
    name: "",
    age: "",
    best_friend: "" // a reference to other collection
}


export class MyCollectionItem extends CollectionItem<typeof MyCollectionFields> {
    getInfo() {
        return {
            collection_name: "my-collection",
            fields: MyCollectionFields,
            writable_fields: Object.keys(MyCollectionFields) as Array<
                keyof typeof MyCollectionFields
            >,
            fields_with_attachments: ["best_friend"] as Array<
                keyof typeof MyCollectionFields
            >,
        };
    }
    
    // you can extend the collection item class with your own methods, if you like
}

export class MyCollectionClient extends CollectionClient<MyCollectionItem> {
    collection_name = "my-collection";
    item_constructor = MyCollectionItem;
}

Then you can use it in a component:

import {useCollection} from "@sealcode/cosealious";

function component(){
    const [myCollectionClient, items, client_params] = useCollection(
        MyCollectionClient,
        {
            filter: { when: getDate()  },
            sort: { when: "asc" },
        }
    );
    
    // ...
    
    return items.map(item => <div>entry.data.when</div>);
}