save parsed markdown into sqlite db
Project description
NoteVault
Define a schema over markdown documents and store certain sections as columsn in sqlite database.
Every list item must have a name as unique key. For non-list items the key is the heading.
Every save creates new version of the documents's child items, no update/overwrite, i.e. created == updated.
Reason: PK is auto-incremented, so it's not possible to update existing items.
Existing items are just de-connected, i.e. foreign keys are set to null.
This also implies that deletion of detached items make sense.
Data will be extracted either as:
1. Key-Value pairs
Model:
KV_List:
name:
type: string
start:
type: time
nullable: true
duration:
type: int
nullable: false
breaks:
type: timedelta
nullable: true
data:
type: string
nullable: true
This works for lists and headings. The heading would be the key and the following paragraph the value.
Lists can be narrow or wide:
Narrow list (often used with headings as lists):
- start: 07:30
- duration: 2:30
- participants: @user1, @user2
Wide list:
- name: item2, start: 17:30, duration: 2, breaks:, data: "adsfadfasdf, asdfasdf"
- name: item1, start: 07:30, duration: 1, breaks: 0:30
2. Lists:
Model:
List:
- field:
name: item
type: string
nullable: false
- field:
name: time
type: time
nullable: true
- field:
name: break
type: timedelta
nullable: true
- field:
name: detail
type: string
nullable: true
List:
- item2, 17:30,, "adsfadfasdf, asdfasdf"
- item1, 07:30, 0:30
Format
- Sections are defined by headings.
- key-value pairs are extracted into fields, e.g.
key: value - Fields (extraction units) correspond to "Tags", e.g.
li, h2because it can contain other tags and newlines. - field values with commas must be quoted:
participants: '@user1, @user2'
Single Item:
- spec:
is_list: false - markdown lists as fields:
- key: value
Multiple Items:
markdown lists
- spec:
is_list: true+list_specifier: kv_list - substructure: format:
- key: value, key: value, key: "complex, value"
sub-headings
- spec:
is_list: true+heading_field: name+list_specifier: heading(must specify the field which will hold the sub-heading in the schema) - substructure: format:
## Title xcan contain: - markdown lists as fields:
- key: value - sub-headings as simple content fields
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notevault-2.0.0.tar.gz.
File metadata
- Download URL: notevault-2.0.0.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.10.4 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1b486aae0b6389ecd031ea1a9f0257e438530756766eefadf68955cba03ee80
|
|
| MD5 |
6c903952f625a5ed12625d33119c9e91
|
|
| BLAKE2b-256 |
fdd4ea69bec4d02e0466e56c7d4bf58922c261913eb6316b4a3ee9f8b34bc9d1
|
File details
Details for the file notevault-2.0.0-py3-none-any.whl.
File metadata
- Download URL: notevault-2.0.0-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.10.4 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23d3c7260002f7f64dce959c62400e622d5a0243b1ecf2f39bc5fac737fb3856
|
|
| MD5 |
4ca79c7708c99f222d39e44c4bd3f74c
|
|
| BLAKE2b-256 |
9492e2fa22eb67d2afa9ec169482134b77c8176134d6b23db9aa1f9cd3772f5d
|