datanotes 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.cjs +175 -8
- package/dist/api/index.js +175 -8
- package/dist/api/mcp.cjs +175 -8
- package/dist/api/mcp.js +175 -8
- package/dist/datanotes.cjs +591 -139
- package/dist/docs/api/operations/add_column.md +1 -0
- package/dist/docs/api/operations/add_constraint.md +2 -0
- package/dist/docs/api/operations/alter_column.md +1 -1
- package/dist/docs/api/operations/alter_table.md +3 -2
- package/dist/docs/api/operations/check_table.md +1 -1
- package/dist/docs/api/operations/create_table.md +3 -1
- package/dist/docs/api/operations/describe_table.md +1 -1
- package/dist/docs/api/operations/insert_row.md +2 -2
- package/dist/docs/api/operations/tags/rows-dml.md +1 -1
- package/dist/docs/api.md +2 -2
- package/dist/docs/guides/data-quality/check-constraints.md +14 -13
- package/dist/docs/guides/data-quality/hand-edits.md +10 -10
- package/dist/docs/guides/database-objects/bases.md +11 -11
- package/dist/docs/guides/database-objects/catalogs-and-schemas.md +16 -10
- package/dist/docs/guides/database-objects/columns.md +38 -38
- package/dist/docs/guides/database-objects/relations.md +173 -36
- package/dist/docs/guides/database-objects/tables.md +80 -35
- package/dist/docs/guides/database-objects/views.md +44 -44
- package/dist/docs/guides/history/change-data-feed.md +34 -34
- package/dist/docs/guides/history/journal-and-undo.md +12 -12
- package/dist/docs/guides/history/restore.md +20 -20
- package/dist/docs/guides/history/table-history.md +31 -31
- package/dist/docs/guides/read-and-write/automatic-links.md +15 -15
- package/dist/docs/guides/read-and-write/import-notes.md +21 -21
- package/dist/docs/guides/read-and-write/joins-and-aggregates.md +7 -7
- package/dist/docs/guides/read-and-write/read-and-filter.md +10 -10
- package/dist/docs/guides/read-and-write/write-rows.md +10 -10
- package/dist/docs/guides/search/text.md +1 -1
- package/dist/docs/reference/cli.md +1 -1
- package/dist/docs/reference/errors.md +1 -1
- package/dist/docs/reference/operations/auxiliary.md +2 -2
- package/dist/docs/reference/operations/rows.md +1 -1
- package/dist/docs/reference/operations/schema.md +15 -11
- package/dist/docs/reference/operations.md +28 -28
- package/dist/docs/release-notes.md +24 -0
- package/package.json +1 -1
|
@@ -58,7 +58,7 @@ Answer:
|
|
|
58
58
|
```json
|
|
59
59
|
{
|
|
60
60
|
"ok": true,
|
|
61
|
-
"migration_id": "
|
|
61
|
+
"migration_id": "20261019T040638-create_table-create-table-main-public-film",
|
|
62
62
|
"summary": null
|
|
63
63
|
}
|
|
64
64
|
```
|
|
@@ -67,7 +67,7 @@ Answer:
|
|
|
67
67
|
|
|
68
68
|
```yaml
|
|
69
69
|
# Metastore (Datanotes): catalogs, schemas, tables, columns, views.
|
|
70
|
-
id:
|
|
70
|
+
id: 01a15257-09b6-7466-9ee6-59ac45171fa4
|
|
71
71
|
config:
|
|
72
72
|
history: true
|
|
73
73
|
|
|
@@ -305,10 +305,11 @@ Answer (83 lines)
|
|
|
305
305
|
|
|
306
306
|
## Add fixed front matter keys, a note template and tags
|
|
307
307
|
|
|
308
|
-
`create_table` takes
|
|
308
|
+
`create_table` takes four more arguments:
|
|
309
309
|
|
|
310
310
|
* **`fields`**: front matter keys every new row gets with a fixed value and no checks, such as `cssclasses`, which styles the notes in Obsidian
|
|
311
311
|
* **`row_template`**: the text of every new row’s note, with `{column}` placeholders
|
|
312
|
+
* **`instructions`**: how an agent fills a row, such as which columns come first and what to ask you
|
|
312
313
|
* **`tags`**: key/value labels for the table, which `list_tables` and `describe_table` return
|
|
313
314
|
|
|
314
315
|
**`create_table`**
|
|
@@ -353,6 +354,7 @@ Answer (83 lines)
|
|
|
353
354
|
"filename": "{occurred_at:YYYY-MM-DD} {film}",
|
|
354
355
|
"fields": { "cssclasses": ["watch"] },
|
|
355
356
|
"row_template": "Watched {film} ({where}).\n\n## Thoughts\n",
|
|
357
|
+
"instructions": "1. Ask me which film I watched and where.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n",
|
|
356
358
|
"tags": { "area": "films" }
|
|
357
359
|
}
|
|
358
360
|
```
|
|
@@ -377,24 +379,24 @@ Answer:
|
|
|
377
379
|
"ok": true,
|
|
378
380
|
"op": "insert_row",
|
|
379
381
|
"files_created": 1,
|
|
380
|
-
"planned_creates": ["datanotes/main/public/watch/2026-10-
|
|
382
|
+
"planned_creates": ["datanotes/main/public/watch/2026-10-19 Nosferatu.md"],
|
|
381
383
|
"commits": [{ "table": "main.public.watch", "version": 1, "operation": "WRITE" }],
|
|
382
|
-
"migration_id": "
|
|
384
|
+
"migration_id": "20261019T040638-insert_row-insert-into-watch"
|
|
383
385
|
}
|
|
384
386
|
```
|
|
385
387
|
|
|
386
|
-
`datanotes/main/public/watch/2026-10-
|
|
388
|
+
`datanotes/main/public/watch/2026-10-19 Nosferatu.md` now reads:
|
|
387
389
|
|
|
388
390
|
```markdown
|
|
389
391
|
---
|
|
390
392
|
table: main.public.watch
|
|
391
393
|
cssclasses:
|
|
392
394
|
- watch
|
|
393
|
-
id:
|
|
395
|
+
id: 01a15257-0aa0-7f95-8445-28bb94536020
|
|
394
396
|
film: Nosferatu
|
|
395
397
|
where: outdoor screening
|
|
396
398
|
place: the park by the river
|
|
397
|
-
occurred_at: 2026-10-
|
|
399
|
+
occurred_at: 2026-10-19T04:06:38Z
|
|
398
400
|
---
|
|
399
401
|
Watched Nosferatu (outdoor screening).
|
|
400
402
|
|
|
@@ -402,6 +404,46 @@ Watched Nosferatu (outdoor screening).
|
|
|
402
404
|
## Thoughts
|
|
403
405
|
```
|
|
404
406
|
|
|
407
|
+
## Tell agents how to fill a row with `instructions`
|
|
408
|
+
|
|
409
|
+
`describe_table` returns a table’s `instructions`, so an agent reads them before it writes a row. `alter_table` changes them, and `instructions: ""` removes them.
|
|
410
|
+
|
|
411
|
+
**`describe_table`**
|
|
412
|
+
|
|
413
|
+
```json
|
|
414
|
+
{ "table": "watch" }
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Answer:
|
|
418
|
+
|
|
419
|
+
```json
|
|
420
|
+
{
|
|
421
|
+
"qualified": "main.public.watch",
|
|
422
|
+
"instructions": "1. Ask me which film I watched and where.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n"
|
|
423
|
+
}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**`alter_table`**
|
|
427
|
+
|
|
428
|
+
```json
|
|
429
|
+
{
|
|
430
|
+
"table": "watch",
|
|
431
|
+
"instructions": "1. Ask me which film I watched, where and with whom.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n"
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
Answer:
|
|
436
|
+
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"ok": true,
|
|
440
|
+
"op": "alter_table",
|
|
441
|
+
"planned_texts": ["datanotes/metastore.yaml"],
|
|
442
|
+
"commits": [{ "table": "main.public.watch", "version": 2, "operation": "ALTER TABLE" }],
|
|
443
|
+
"migration_id": "20261019T040638-alter_table-alter-table-main-public-watch"
|
|
444
|
+
}
|
|
445
|
+
```
|
|
446
|
+
|
|
405
447
|
## Set a table’s options when you create it
|
|
406
448
|
|
|
407
449
|
`create_table` also takes the options that `alter_table` changes later. Two of them:
|
|
@@ -512,7 +554,7 @@ Answer:
|
|
|
512
554
|
"commits": [
|
|
513
555
|
{ "table": "diary.classics.actor", "version": 6, "operation": "ALTER TABLE" }
|
|
514
556
|
],
|
|
515
|
-
"migration_id": "
|
|
557
|
+
"migration_id": "20261019T040655-alter_table-move-table-diary-classics-acto"
|
|
516
558
|
}
|
|
517
559
|
```
|
|
518
560
|
|
|
@@ -553,7 +595,7 @@ Answer:
|
|
|
553
595
|
"commits": [
|
|
554
596
|
{ "table": "diary.credits.actor", "version": 7, "operation": "ALTER TABLE" }
|
|
555
597
|
],
|
|
556
|
-
"migration_id": "
|
|
598
|
+
"migration_id": "20261019T040655-alter_table-move-table-diary-classics-acto-2"
|
|
557
599
|
}
|
|
558
600
|
```
|
|
559
601
|
|
|
@@ -617,7 +659,7 @@ Answer:
|
|
|
617
659
|
"commits": [
|
|
618
660
|
{ "table": "diary.classics.film", "version": 13, "operation": "ALTER TABLE" }
|
|
619
661
|
],
|
|
620
|
-
"migration_id": "
|
|
662
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-5"
|
|
621
663
|
}
|
|
622
664
|
```
|
|
623
665
|
|
|
@@ -669,7 +711,7 @@ Answer:
|
|
|
669
711
|
"commits": [
|
|
670
712
|
{ "table": "diary.classics.film", "version": 14, "operation": "ALTER TABLE" }
|
|
671
713
|
],
|
|
672
|
-
"migration_id": "
|
|
714
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-6"
|
|
673
715
|
}
|
|
674
716
|
```
|
|
675
717
|
|
|
@@ -711,7 +753,7 @@ Answer:
|
|
|
711
753
|
"commits": [
|
|
712
754
|
{ "table": "diary.classics.film", "version": 15, "operation": "ALTER TABLE" }
|
|
713
755
|
],
|
|
714
|
-
"migration_id": "
|
|
756
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-7"
|
|
715
757
|
}
|
|
716
758
|
```
|
|
717
759
|
|
|
@@ -731,7 +773,7 @@ Answer:
|
|
|
731
773
|
"commits": [
|
|
732
774
|
{ "table": "diary.classics.film", "version": 16, "operation": "ALTER TABLE" }
|
|
733
775
|
],
|
|
734
|
-
"migration_id": "
|
|
776
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-8"
|
|
735
777
|
}
|
|
736
778
|
```
|
|
737
779
|
|
|
@@ -751,7 +793,7 @@ Answer:
|
|
|
751
793
|
"commits": [
|
|
752
794
|
{ "table": "diary.classics.film", "version": 17, "operation": "ALTER TABLE" }
|
|
753
795
|
],
|
|
754
|
-
"migration_id": "
|
|
796
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-9"
|
|
755
797
|
}
|
|
756
798
|
```
|
|
757
799
|
|
|
@@ -778,7 +820,7 @@ Answer:
|
|
|
778
820
|
"files_created": 1,
|
|
779
821
|
"planned_creates": ["datanotes/diary/classics/film/1925/Battleship Potemkin (1925).md"],
|
|
780
822
|
"commits": [{ "table": "diary.classics.film", "version": 18, "operation": "WRITE" }],
|
|
781
|
-
"migration_id": "
|
|
823
|
+
"migration_id": "20261019T040655-insert_row-insert-into-film-4"
|
|
782
824
|
}
|
|
783
825
|
```
|
|
784
826
|
|
|
@@ -788,7 +830,7 @@ Answer:
|
|
|
788
830
|
---
|
|
789
831
|
table: diary.classics.film
|
|
790
832
|
cut: restored
|
|
791
|
-
id:
|
|
833
|
+
id: 01a15257-4d4f-7108-9b86-834bf7261cc6
|
|
792
834
|
title: Battleship Potemkin
|
|
793
835
|
year: 1925
|
|
794
836
|
minutes: 75
|
|
@@ -819,7 +861,7 @@ Answer:
|
|
|
819
861
|
"commits": [
|
|
820
862
|
{ "table": "diary.classics.film", "version": 19, "operation": "ALTER TABLE" }
|
|
821
863
|
],
|
|
822
|
-
"migration_id": "
|
|
864
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-10"
|
|
823
865
|
}
|
|
824
866
|
```
|
|
825
867
|
|
|
@@ -841,7 +883,7 @@ Answer:
|
|
|
841
883
|
"files_created": 1,
|
|
842
884
|
"planned_creates": ["datanotes/diary/classics/film/1924/Sherlock Jr. (1924).md"],
|
|
843
885
|
"commits": [{ "table": "diary.classics.film", "version": 20, "operation": "WRITE" }],
|
|
844
|
-
"migration_id": "
|
|
886
|
+
"migration_id": "20261019T040655-insert_row-insert-into-film-5"
|
|
845
887
|
}
|
|
846
888
|
```
|
|
847
889
|
|
|
@@ -851,7 +893,7 @@ Answer:
|
|
|
851
893
|
---
|
|
852
894
|
table: diary.classics.film
|
|
853
895
|
cut: restored
|
|
854
|
-
id:
|
|
896
|
+
id: 01a15257-4d65-7ac8-9da9-cebd6bcb8f00
|
|
855
897
|
title: Sherlock Jr.
|
|
856
898
|
year: 1924
|
|
857
899
|
minutes: 45
|
|
@@ -884,7 +926,7 @@ Answer:
|
|
|
884
926
|
"commits": [
|
|
885
927
|
{ "table": "diary.classics.film", "version": 21, "operation": "ALTER TABLE" }
|
|
886
928
|
],
|
|
887
|
-
"migration_id": "
|
|
929
|
+
"migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-11"
|
|
888
930
|
}
|
|
889
931
|
```
|
|
890
932
|
|
|
@@ -966,7 +1008,7 @@ Answer:
|
|
|
966
1008
|
```json
|
|
967
1009
|
{
|
|
968
1010
|
"ok": true,
|
|
969
|
-
"migration_id": "
|
|
1011
|
+
"migration_id": "20261019T040655-create_table-create-table-diary-log-watch"
|
|
970
1012
|
}
|
|
971
1013
|
```
|
|
972
1014
|
|
|
@@ -995,7 +1037,7 @@ Answer:
|
|
|
995
1037
|
"files_created": 1,
|
|
996
1038
|
"planned_creates": ["datanotes/diary/log/watch/2026/10/2026-10-06 2130.md"],
|
|
997
1039
|
"commits": [{ "table": "diary.log.watch", "version": 1, "operation": "WRITE" }],
|
|
998
|
-
"migration_id": "
|
|
1040
|
+
"migration_id": "20261019T040655-insert_row-insert-into-watch"
|
|
999
1041
|
}
|
|
1000
1042
|
```
|
|
1001
1043
|
|
|
@@ -1004,7 +1046,7 @@ Answer:
|
|
|
1004
1046
|
```markdown
|
|
1005
1047
|
---
|
|
1006
1048
|
table: diary.log.watch
|
|
1007
|
-
id:
|
|
1049
|
+
id: 01a15257-4da6-75c4-814b-80ede5508ccc
|
|
1008
1050
|
film: "[[Nosferatu (1922)]]"
|
|
1009
1051
|
occurred_at: 2026-10-06T21:30:00+02:00
|
|
1010
1052
|
where: outdoor screening
|
|
@@ -1040,7 +1082,7 @@ Answer:
|
|
|
1040
1082
|
"commits": [
|
|
1041
1083
|
{ "table": "sandbox.classics.film_copy", "version": 0, "operation": "CLONE" }
|
|
1042
1084
|
],
|
|
1043
|
-
"migration_id": "
|
|
1085
|
+
"migration_id": "20261019T040655-clone_table-clone-diary-classics-film-to-s"
|
|
1044
1086
|
}
|
|
1045
1087
|
```
|
|
1046
1088
|
|
|
@@ -1106,7 +1148,7 @@ Answer:
|
|
|
1106
1148
|
"commits": [
|
|
1107
1149
|
{ "table": "sandbox.classics.film_empty", "version": 0, "operation": "CLONE" }
|
|
1108
1150
|
],
|
|
1109
|
-
"migration_id": "
|
|
1151
|
+
"migration_id": "20261019T040655-clone_table-clone-diary-classics-film-to-s-2"
|
|
1110
1152
|
}
|
|
1111
1153
|
```
|
|
1112
1154
|
|
|
@@ -1188,7 +1230,7 @@ Answer:
|
|
|
1188
1230
|
],
|
|
1189
1231
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
1190
1232
|
"commits": [{ "table": "main.public.scratch", "version": 2, "operation": "DROP TABLE" }],
|
|
1191
|
-
"migration_id": "
|
|
1233
|
+
"migration_id": "20261019T040638-drop_table-drop-table-scratch"
|
|
1192
1234
|
}
|
|
1193
1235
|
```
|
|
1194
1236
|
|
|
@@ -1212,7 +1254,7 @@ The engine wrote this file in its own words. It holds `film`, `watch` and `revie
|
|
|
1212
1254
|
|
|
1213
1255
|
```yaml
|
|
1214
1256
|
# Metastore (Datanotes): catalogs, schemas, tables, columns, views.
|
|
1215
|
-
id:
|
|
1257
|
+
id: 01a15257-09b6-7466-9ee6-59ac45171fa4
|
|
1216
1258
|
config:
|
|
1217
1259
|
history: true
|
|
1218
1260
|
|
|
@@ -1271,6 +1313,14 @@ catalogs:
|
|
|
1271
1313
|
description: Each time I watch a film
|
|
1272
1314
|
tags:
|
|
1273
1315
|
area: films
|
|
1316
|
+
row_template: |
|
|
1317
|
+
Watched {film} ({where}).
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
## Thoughts
|
|
1321
|
+
instructions: |
|
|
1322
|
+
1. Ask me which film I watched, where and with whom.
|
|
1323
|
+
2. Fill `occurred_at` only when I give a time: it defaults to now.
|
|
1274
1324
|
options:
|
|
1275
1325
|
filename: "{occurred_at:YYYY-MM-DD} {film}"
|
|
1276
1326
|
archive: _archive
|
|
@@ -1280,11 +1330,11 @@ catalogs:
|
|
|
1280
1330
|
columns:
|
|
1281
1331
|
- name: id
|
|
1282
1332
|
type: string
|
|
1283
|
-
required: true
|
|
1284
|
-
description: "Unique id of the row (UUIDv7): set when the row is created, never changes"
|
|
1285
1333
|
unique: true
|
|
1286
1334
|
identity: uuid
|
|
1335
|
+
required: true
|
|
1287
1336
|
dense: true
|
|
1337
|
+
description: "Unique id of the row (UUIDv7): set when the row is created, never changes"
|
|
1288
1338
|
- name: film
|
|
1289
1339
|
type: string
|
|
1290
1340
|
required: true
|
|
@@ -1309,11 +1359,6 @@ catalogs:
|
|
|
1309
1359
|
min: 0
|
|
1310
1360
|
step: 0.01
|
|
1311
1361
|
description: What the ticket cost, if anything
|
|
1312
|
-
row_template: |
|
|
1313
|
-
Watched {film} ({where}).
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
## Thoughts
|
|
1317
1362
|
review:
|
|
1318
1363
|
description: What I wrote about a film after watching it
|
|
1319
1364
|
options:
|
|
@@ -41,7 +41,7 @@ Answer:
|
|
|
41
41
|
"ok": true,
|
|
42
42
|
"op": "create_view",
|
|
43
43
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
44
|
-
"migration_id": "
|
|
44
|
+
"migration_id": "20261019T040648-create_view-create-view-main-public-vw_rec"
|
|
45
45
|
}
|
|
46
46
|
```
|
|
47
47
|
|
|
@@ -65,16 +65,16 @@ Answer:
|
|
|
65
65
|
"total": 2,
|
|
66
66
|
"rows": [
|
|
67
67
|
{
|
|
68
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
68
|
+
"path": "datanotes/main/public/watch/2026-10-17T2030.md",
|
|
69
69
|
"film": "[[The Gold Rush]]",
|
|
70
|
-
"occurred_at": "2026-10-
|
|
70
|
+
"occurred_at": "2026-10-17T20:30",
|
|
71
71
|
"where": "home",
|
|
72
72
|
"place": "my living room"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
75
|
+
"path": "datanotes/main/public/watch/2026-10-14T2115.md",
|
|
76
76
|
"film": "[[Charade]]",
|
|
77
|
-
"occurred_at": "2026-10-
|
|
77
|
+
"occurred_at": "2026-10-14T21:15",
|
|
78
78
|
"where": "home",
|
|
79
79
|
"place": "my living room"
|
|
80
80
|
}
|
|
@@ -156,7 +156,7 @@ Answer:
|
|
|
156
156
|
"ok": true,
|
|
157
157
|
"op": "create_view",
|
|
158
158
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
159
|
-
"migration_id": "
|
|
159
|
+
"migration_id": "20261019T040648-create_view-create-view-main-public-vw_rec-2"
|
|
160
160
|
}
|
|
161
161
|
```
|
|
162
162
|
|
|
@@ -194,7 +194,7 @@ Answer:
|
|
|
194
194
|
"ok": true,
|
|
195
195
|
"op": "create_view",
|
|
196
196
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
197
|
-
"migration_id": "
|
|
197
|
+
"migration_id": "20261019T040648-create_view-create-view-main-public-vw_las"
|
|
198
198
|
}
|
|
199
199
|
```
|
|
200
200
|
|
|
@@ -214,59 +214,59 @@ Answer (65 lines)
|
|
|
214
214
|
{
|
|
215
215
|
"path": "datanotes/main/public/film/Night of the Living Dead.md",
|
|
216
216
|
"title": "Night of the Living Dead",
|
|
217
|
-
"watched_on": "2026-10-
|
|
217
|
+
"watched_on": "2026-10-18",
|
|
218
218
|
"cast": [
|
|
219
219
|
{
|
|
220
220
|
"path": "datanotes/main/public/actor/Duane Jones.md",
|
|
221
221
|
"table": "main.public.actor",
|
|
222
|
-
"id": "
|
|
222
|
+
"id": "01a15257-301f-7673-a539-232f5503e508",
|
|
223
223
|
"name": "Duane Jones",
|
|
224
224
|
"born": "1937-04-02"
|
|
225
225
|
}
|
|
226
226
|
],
|
|
227
227
|
"viewing": [
|
|
228
|
-
{ "path": "datanotes/main/public/watch/2026-10-
|
|
228
|
+
{ "path": "datanotes/main/public/watch/2026-10-18T2200.md", "where": "cinema" }
|
|
229
229
|
]
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
232
|
"path": "datanotes/main/public/film/The Gold Rush.md",
|
|
233
233
|
"title": "The Gold Rush",
|
|
234
|
-
"watched_on": "2026-10-
|
|
234
|
+
"watched_on": "2026-10-17",
|
|
235
235
|
"cast": [
|
|
236
236
|
{
|
|
237
237
|
"path": "datanotes/main/public/actor/Charlie Chaplin.md",
|
|
238
238
|
"table": "main.public.actor",
|
|
239
|
-
"id": "
|
|
239
|
+
"id": "01a15257-2ffd-7cc9-a75d-33f2521017c5",
|
|
240
240
|
"name": "Charlie Chaplin",
|
|
241
241
|
"born": "1889-04-16"
|
|
242
242
|
}
|
|
243
243
|
],
|
|
244
244
|
"viewing": [
|
|
245
|
-
{ "path": "datanotes/main/public/watch/2026-10-
|
|
245
|
+
{ "path": "datanotes/main/public/watch/2026-10-17T2030.md", "where": "home" }
|
|
246
246
|
]
|
|
247
247
|
},
|
|
248
248
|
{
|
|
249
249
|
"path": "datanotes/main/public/film/Charade.md",
|
|
250
250
|
"title": "Charade",
|
|
251
|
-
"watched_on": "2026-10-
|
|
251
|
+
"watched_on": "2026-10-14",
|
|
252
252
|
"cast": [
|
|
253
253
|
{
|
|
254
254
|
"path": "datanotes/main/public/actor/Cary Grant.md",
|
|
255
255
|
"table": "main.public.actor",
|
|
256
|
-
"id": "
|
|
256
|
+
"id": "01a15257-300c-734a-9890-e6fa77c91bc8",
|
|
257
257
|
"name": "Cary Grant",
|
|
258
258
|
"born": "1904-01-18"
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
"path": "datanotes/main/public/actor/Audrey Hepburn.md",
|
|
262
262
|
"table": "main.public.actor",
|
|
263
|
-
"id": "
|
|
263
|
+
"id": "01a15257-3019-7cfd-932d-a771c31e1661",
|
|
264
264
|
"name": "Audrey Hepburn",
|
|
265
265
|
"born": "1929-05-04"
|
|
266
266
|
}
|
|
267
267
|
],
|
|
268
268
|
"viewing": [
|
|
269
|
-
{ "path": "datanotes/main/public/watch/2026-10-
|
|
269
|
+
{ "path": "datanotes/main/public/watch/2026-10-14T2115.md", "where": "home" }
|
|
270
270
|
]
|
|
271
271
|
}
|
|
272
272
|
],
|
|
@@ -313,7 +313,7 @@ Answer:
|
|
|
313
313
|
"ok": true,
|
|
314
314
|
"op": "create_view",
|
|
315
315
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
316
|
-
"migration_id": "
|
|
316
|
+
"migration_id": "20261019T040648-create_view-create-view-main-public-vw_mos"
|
|
317
317
|
}
|
|
318
318
|
```
|
|
319
319
|
|
|
@@ -382,7 +382,7 @@ Answer:
|
|
|
382
382
|
"ok": true,
|
|
383
383
|
"op": "create_view",
|
|
384
384
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
385
|
-
"migration_id": "
|
|
385
|
+
"migration_id": "20261019T040648-create_view-create-view-main-public-vw_lat"
|
|
386
386
|
}
|
|
387
387
|
```
|
|
388
388
|
|
|
@@ -400,59 +400,59 @@ Answer (64 lines)
|
|
|
400
400
|
"total": 4,
|
|
401
401
|
"rows": [
|
|
402
402
|
{
|
|
403
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
403
|
+
"path": "datanotes/main/public/watch/2026-10-18T2200.md",
|
|
404
404
|
"film": {
|
|
405
405
|
"path": "datanotes/main/public/film/Night of the Living Dead.md",
|
|
406
406
|
"table": "main.public.film",
|
|
407
|
-
"id": "
|
|
407
|
+
"id": "01a15257-305f-798e-9a2a-b41b9c77960d",
|
|
408
408
|
"title": "Night of the Living Dead",
|
|
409
409
|
"year": 1968,
|
|
410
410
|
"minutes": 96,
|
|
411
411
|
"status": "watched",
|
|
412
412
|
"rating": 4,
|
|
413
|
-
"watched_on": "2026-10-
|
|
413
|
+
"watched_on": "2026-10-18",
|
|
414
414
|
"director": "George A. Romero",
|
|
415
415
|
"cast": ["[[Duane Jones]]"]
|
|
416
416
|
},
|
|
417
|
-
"occurred_at": "2026-10-
|
|
417
|
+
"occurred_at": "2026-10-18T22:00",
|
|
418
418
|
"where": "cinema",
|
|
419
419
|
"_source": "watch"
|
|
420
420
|
},
|
|
421
421
|
{
|
|
422
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
422
|
+
"path": "datanotes/main/public/watch/2026-10-17T2030.md",
|
|
423
423
|
"film": {
|
|
424
424
|
"path": "datanotes/main/public/film/The Gold Rush.md",
|
|
425
425
|
"table": "main.public.film",
|
|
426
|
-
"id": "
|
|
426
|
+
"id": "01a15257-3043-7342-b25e-e2dabd4b1268",
|
|
427
427
|
"title": "The Gold Rush",
|
|
428
428
|
"year": 1925,
|
|
429
429
|
"minutes": 95,
|
|
430
430
|
"status": "watched",
|
|
431
431
|
"rating": 5,
|
|
432
|
-
"watched_on": "2026-10-
|
|
432
|
+
"watched_on": "2026-10-17",
|
|
433
433
|
"director": "Charlie Chaplin",
|
|
434
434
|
"cast": ["[[Charlie Chaplin]]"]
|
|
435
435
|
},
|
|
436
|
-
"occurred_at": "2026-10-
|
|
436
|
+
"occurred_at": "2026-10-17T20:30",
|
|
437
437
|
"where": "home",
|
|
438
438
|
"_source": "watch"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
441
|
+
"path": "datanotes/main/public/watch/2026-10-14T2115.md",
|
|
442
442
|
"film": {
|
|
443
443
|
"path": "datanotes/main/public/film/Charade.md",
|
|
444
444
|
"table": "main.public.film",
|
|
445
|
-
"id": "
|
|
445
|
+
"id": "01a15257-3058-76e4-b51b-456bd3a7ea31",
|
|
446
446
|
"title": "Charade",
|
|
447
447
|
"year": 1963,
|
|
448
448
|
"minutes": 113,
|
|
449
449
|
"status": "watched",
|
|
450
450
|
"rating": 4,
|
|
451
|
-
"watched_on": "2026-10-
|
|
451
|
+
"watched_on": "2026-10-14",
|
|
452
452
|
"director": "Stanley Donen",
|
|
453
453
|
"cast": ["[[Cary Grant]]", "[[Audrey Hepburn]]"]
|
|
454
454
|
},
|
|
455
|
-
"occurred_at": "2026-10-
|
|
455
|
+
"occurred_at": "2026-10-14T21:15",
|
|
456
456
|
"where": "home",
|
|
457
457
|
"_source": "watch"
|
|
458
458
|
}
|
|
@@ -476,14 +476,14 @@ Answer:
|
|
|
476
476
|
"ok": true,
|
|
477
477
|
"op": "drop_view",
|
|
478
478
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
479
|
-
"migration_id": "
|
|
479
|
+
"migration_id": "20261019T040648-drop_view-drop-view-main-public-vw_most_"
|
|
480
480
|
}
|
|
481
481
|
```
|
|
482
482
|
|
|
483
483
|
**`undo_migration`**
|
|
484
484
|
|
|
485
485
|
```json
|
|
486
|
-
{ "migration_id": "
|
|
486
|
+
{ "migration_id": "20261019T040648-drop_view-drop-view-main-public-vw_most_" }
|
|
487
487
|
```
|
|
488
488
|
|
|
489
489
|
Answer:
|
|
@@ -492,8 +492,8 @@ Answer:
|
|
|
492
492
|
{
|
|
493
493
|
"ok": true,
|
|
494
494
|
"op": "undo_migration",
|
|
495
|
-
"undoes": "
|
|
496
|
-
"migration_id": "
|
|
495
|
+
"undoes": "20261019T040648-drop_view-drop-view-main-public-vw_most_",
|
|
496
|
+
"migration_id": "20261019T040648-undo_migration-undo-20261019t040648-drop_view",
|
|
497
497
|
"conflicts": [],
|
|
498
498
|
"failed": []
|
|
499
499
|
}
|
|
@@ -526,7 +526,7 @@ Answer:
|
|
|
526
526
|
"ok": true,
|
|
527
527
|
"op": "create_view",
|
|
528
528
|
"planned_texts": ["datanotes/metastore.yaml"],
|
|
529
|
-
"migration_id": "
|
|
529
|
+
"migration_id": "20261019T040648-create_view-create-view-main-reports-vw_wa"
|
|
530
530
|
}
|
|
531
531
|
```
|
|
532
532
|
|
|
@@ -619,7 +619,7 @@ Answer:
|
|
|
619
619
|
```json
|
|
620
620
|
{
|
|
621
621
|
"ok": true,
|
|
622
|
-
"migration_id": "
|
|
622
|
+
"migration_id": "20261019T040648-batch-views-for-film-and-actor-notes",
|
|
623
623
|
"steps": [
|
|
624
624
|
{ "op": "create_view", "ok": true },
|
|
625
625
|
{ "op": "create_view", "ok": true },
|
|
@@ -645,13 +645,13 @@ Answer:
|
|
|
645
645
|
"total": 2,
|
|
646
646
|
"rows": [
|
|
647
647
|
{
|
|
648
|
-
"path": "datanotes/main/public/watch/2026-09-
|
|
649
|
-
"occurred_at": "2026-09-
|
|
648
|
+
"path": "datanotes/main/public/watch/2026-09-30T2100.md",
|
|
649
|
+
"occurred_at": "2026-09-30T21:00",
|
|
650
650
|
"where": "home"
|
|
651
651
|
},
|
|
652
652
|
{
|
|
653
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
654
|
-
"occurred_at": "2026-10-
|
|
653
|
+
"path": "datanotes/main/public/watch/2026-10-17T2030.md",
|
|
654
|
+
"occurred_at": "2026-10-17T20:30",
|
|
655
655
|
"where": "home"
|
|
656
656
|
}
|
|
657
657
|
],
|
|
@@ -679,9 +679,9 @@ Answer:
|
|
|
679
679
|
"total": 1,
|
|
680
680
|
"rows": [
|
|
681
681
|
{
|
|
682
|
-
"path": "datanotes/main/public/watch/2026-10-
|
|
682
|
+
"path": "datanotes/main/public/watch/2026-10-17T2030.md",
|
|
683
683
|
"film": "[[The Gold Rush]]",
|
|
684
|
-
"occurred_at": "2026-10-
|
|
684
|
+
"occurred_at": "2026-10-17T20:30",
|
|
685
685
|
"where": "home"
|
|
686
686
|
}
|
|
687
687
|
],
|
|
@@ -766,7 +766,7 @@ The engine wrote this page’s views under `views:` in their schema, next to the
|
|
|
766
766
|
|
|
767
767
|
```yaml
|
|
768
768
|
# Metastore (Datanotes): catalogs, schemas, tables, columns, views.
|
|
769
|
-
id:
|
|
769
|
+
id: 01a15257-2fe2-7692-8c87-67639c554380
|
|
770
770
|
config:
|
|
771
771
|
history: true
|
|
772
772
|
|