Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Goals & requirements #1

Open
ribose-jeffreylau opened this issue Jan 16, 2019 · 3 comments
Open

Goals & requirements #1

ribose-jeffreylau opened this issue Jan 16, 2019 · 3 comments
Assignees
Labels
enhancement New feature or request

Comments

@ribose-jeffreylau
Copy link
Contributor

Goals

  • To be able to easily generate a static directory site using static-site generators like Jekyll, where one file corresponds directly to one static page
  • To be able to translate between files that are in ISO 56001 serialization format (textual) and GraphQL instructions
  • To be able to manipulate records (CRUD) with the commandline interface

But since ISO 56001 is not the only file format that we'll be dealing with, this layer should be able to support multiple input / output formats, i.e. this can be thought of a sort of templating workflow / a compiler that compiles both ways

Use cases

Performance

One of the use cases is, for performance reasons, to first export the DB into (e.g.) MySQL, and hand off all CRUD actions to the MySQL server for the duration of the directory server. And as a backup mechanism, periodically dump it back to the flat file DB and possibly git-committing the patch. This requires exporting to and importing from MySQL.

CRUD

Another use case is the aforementioned translation from GraphQL, to JSON / XML / HTML (i.e. the read operation), and from GraphQL back to the flat file (i.e. create / update / destroy).

Requirements

Compilation flow tapping

We also have a requirement on the compilation flow itself, which is to be able to provide exposed compilation stages for others to tap into.

E.g., I'd like to implement a layer that uses results from stages A, B, and E, where A, B and E are names of the compilation stages that are configurable say from the compilation / translation configuration file.

These different stages act as some sort of data abstraction mechanism, i.e. a chance for source documents to be translated into intermediary formats that are possibly easier to perform CRUD operations and to provide greater performance (e.g. the MySQL example above).

Configuration file as blueprint

The configuration file would probably be some sort of a blueprint that lists out all the "compiler plugins", their names, and most importantly, where each output goes (e.g. to specify that output from stage A should go into B, C and D, and outputs from B and C should go to E).

@ribose-jeffreylau ribose-jeffreylau added the enhancement New feature or request label Jan 16, 2019
@ribose-jeffreylau
Copy link
Contributor Author

Here is a starting point of the file layout that should be used as the underlying structure for ffdb:

https://github.com/riboseinc/ffdb/tree/doc/spec/support/fixtures/layouts/sample-1

This layout is not final and will need more inputs.

@ronaldtse
Copy link

ffdb represents an approach we see already applicable to a number of sites we run, including the Geolexica site (https://github.com/ISO-TC211/geolexica.com).

Hoping we can use ffdb in Geolexica very soon 👍

@ronaldtse
Copy link

(and it will be awesome to use it in Metanorma/Selagraph...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants