Datacube support

Authored by dereckson on Mar 3 2018, 21:17.



This mechanism allows Dæghrefn to be configured to fill data to
MySQL tables from the partyline.

In the partyline, the user writes .+db <name of the datacube>.

It receives instruction to fill a form as a dialog.
For example, for a song database, the dialog could be:

<luser> .+db songs
<robot> Song artist:
<luser> Apocalyptica
<robot> Song title:
<luser> In the Hall of the Mountain King
<robot> Song comment:
<luser> This is a metal interpretation, with cello.
<luser> The original title is from 1875, as 'incidental music'.
<luser> +
<robot> Ajouté dans le cube :-)

Dictionary structure

The datacube properties is a dictionary with the following data structure:

dbstringThe database where the table is located
tablestringThe table where to insert data into
fieldslistThe fields (ie the columns) to use in the INSERT query
fields_typeslistFor each field, "line" for varchar, etc. / "multiline" for text
fields_promptslistFor each field, the label to prompt the user to invite them to fill a value

In the dialog example above, the values could be:

fields{artist title comment}
fields_types{line line multline}
fields_prompts{"Song artist:" "Song title:" "Song comment:"}

Such datastructure would be saved in db_datacubes table,
with "songs" as title and the dictionary TCL string as
properties value.

Test Plan

Tested on Dæghrefn with a lyrics table

Diff Detail

rVIPER ViperServ scripts
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.
dereckson requested review of this revision.Mar 3 2018, 21:17
dereckson created this revision.
dereckson updated this revision to Diff 3557.Mar 4 2018, 01:36

Better schema to represent fields

dereckson accepted this revision.Mar 4 2018, 23:40
dereckson added inline comments.


This revision is now accepted and ready to land.Mar 4 2018, 23:40
dereckson updated this revision to Diff 3558.Mar 4 2018, 23:40
dereckson marked an inline comment as done.

rm TODO note

This revision was automatically updated to reflect the committed changes.