emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Exploring properties


From: Vikas Rawal
Subject: Re: Exploring properties
Date: Tue, 25 Feb 2020 08:28:47 +0530

I don't know if this is useful. But this is what I could come up with. This 
might at least motivate somebody to think of other possible advantages/uses of 
building org-mode capabilities to interact with databases.

Vikas

---

Feature request: To build tools to facilitate using org-mode as a front-end for 
interacting with a database.

The idea would be to use org-mode to select, insert and update records in a 
database. It is natural to think of recutils, a plain text database, as the 
database backend. But a more generalised solution may allow other choices of 
databases. With a text-based database backend like recutils, we could harness a 
version control system like git to semi-automate collaboraion.

Why would one use org-mode for creating a database application? One can think 
of many advantages. But the biggest advantage (to me) would be that, in this 
setup, a multi-user database application can work without constant internet 
connectivity. You can query recutils files, insert/update records, and then let 
git deal with synchronisation across the team members.

There are other advantages as well. We do not yet have a text-based, 
easy-to-deploy database application system. Recutils provides the 
infrastructure for a backend. But we do not have a fully-developed front-end 
system to interact with recutils. Org-mode is clearly best placed to provide 
the frontend for working with recutils.

Needless to say, this would be particularly interesting to members of the 
org-mode/emacs fan-club. Over the last few years, org-mode has come to be used 
for many tasks that go way beyond what Carsten had in mind when he first built 
org-mode. From web-publishing to writing books, org-mode provides excellent 
tools. Being able to create and use databases from within org-mode would be a 
very useful addition to this toolkit.

We already have tools that can be used to read data from recutils (and other 
databases) and create reports in org-mode. The missing feature is to be able to 
use org-mode to create/update records systemmatically.

There are two possibilities here: to use org-mode tables or org-mode properties 
to interact with the database. The advantage of doing this using the org-mode 
properties is that the column-view of properties provides an easy to use 
interface for entering data. There is already a mechanism for defining 
"Allowed" values for any field which speeds up data entry and helps avoid 
typing errors.

There are several challenges. Some of these are:

1. Extending "Allowed" values to specify type of data that can be recorded 
(numeric, char) or range of values.
2. How to deal with relationships/foreign keys. Can property inheritance be 
used to deal with at least simple foreign key constraints?
3. Org-mode macros provide {{{property(PROPERTYNAME)}}} syntax for macro 
replacement during export. But nothing as simple as this is available for use 
in source code blocks. Something like this would allow using some code to 
add/update records in a database. We should perhaps build on the property API 
or org-ql for creating something like this.

If we can resolve some of these and creating a simple application for 
demonstration, it might help in showing the potential and identifying other 
challenges.

On Mon, Feb 24, 2020 at 09:39:51AM +0100, Bastien wrote:
> Hi Vikas,
>
> Vikas Rawal <address@hidden> writes:
>
> > I am essentially thinking of org-mode providing an
> > interface for feeding data to recutils.
>
> Yes, that would probably be useful.
>
> If you want to write a feature request, please write it as if the
> reader does not know recutils and you precise use-case, so that we
> understand all implication and motivate possible contributors.
>
> Thanks,
>
> --
>  Bastien
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]