Nowa apka sealiousowa bazująca na istniejących danych?

Dotychczasowy usecase apek sealiousowych opierał się na tworzeniu nowych projektów, tzn. takich, które nie zawierają żadnych danych. A co w przypadku, kiedy chcę “podpiąć” Sealiousa do istniejących już danych?

Przykład:

W mojej bazie danych Mongo mam kolekcję articles, która zawiera rekord:

{
    "_id" : ObjectId("5bf36557467971511308b440"),
    "title" : "test",
    "link" : "test",
    "content" : "test"
}

Tworzę apkę sealiousową z kolekcją articles:

app.createChip(Sealious.Collection, {
    name: "articles",
    fields: [
        { name: "title", type: "text", required: true },
        { name: "link", type: "text", required: true},
        { name: "content", type: "text", required: true}
    ],
    access_strategy: { default: "owner", create: "logged_in" },
});

Dodaję nowy rekord:

{
	"title": "sealious_test",
	"link": "sealious_test",
	"content": "sealious_test"
}

Robię GET na /api/v1/collections/articles, odpowiedź:

{
    "attachments": {},
    "items": [
        {
            "title": "sealious_test",
            "link": "sealious_test",
            "content": "sealious_test",
            "id": "ByxjLy-0m",
            "_metadata": {
                "collection": "articles",
                "created_context": {
                    "timestamp": 1542678168096,
                    "ip": "127.0.0.1",
                    "user_id": "H1FfAFL3X",
                    "anonymous_user_id": "S1HJUkZCm",
                    "total": 1
                },
                "last_modified_context": {
                    "timestamp": 1542678168096,
                    "ip": "127.0.0.1",
                    "user_id": "H1FfAFL3X",
                    "anonymous_user_id": "S1HJUkZCm",
                    "total": 1
                },
                "collection_name": "articles"
            },
            "calculated_fields": {}
        }
    ]
}

Powinny być dwa rekordy, jest tylko jeden, prawdopodobnie dlatego, że sealiousowy rekord ma metadane, który poprzedni rekord nie posiada. Czy jest jakaś opcja importu istniejących danych do apki, czy jedyną opcją jest iteracja rekordów w bazie i robienie POSTa?

chyba najprościej będzie faktycznie zrobić skrypt który przeliteruje po danej kolekcji, zrobi POST do kolekcji sealiousowej i DELETE (nie chcemy dziwnych duplikatów). Obecnie chyba nie ma opcji automatycznego przemigrowania całych kolekcji. @kuba-orlik?

1 Like

Ciekawy case ale nie taki łatwy do zrealizowania bo tutaj zakładamy że elementy kolekcji są bardzo płaskie. Trzeba by rozwiązać problem bardziej złożonych struktur, może jakiś konfigurowalny parser?

1 Like

Są dwie opcje

  1. skrypt który za pomocą zapytań do bazy MongoDB przemigruje Ci bazę danych do postaci takiej, jaką wymaga Sealious
  2. skrypt który iteruje po starej bazie danych i na jej podstawie robi POST (lub lepiej - run_action("create") dla każdego z zasobów

:slight_smile:

1 Like