nips/41.md
2024-04-09 17:44:02 -04:00

1.1 KiB

NIP-41

Relational Database

draft optional

This NIP offers a plug-and-play method to export/sync information from existing systems using relational databases into Nostr.

Event kind 31200 represents a row in a database. Each value of the row is added as a tag whose name is the column's name.

The d tag is used for the row's primary key, the n tag places the row into an unbound list to represent the table and the u tag references a database name.

Values can be public or encrypted to the user.

{
  "kind": 31200,
  "tags": [
    ["d", "<database-name:table-name:row-primary-key>"]
    ["n", "<table-name>"]
    ["u", "<database-name>"]
    ["<column-name>", "<column-row-value>"]
    // other public columns
  ],
  "content": nip44Encrypt(JSON.stringify((
    [
      ["<column-name>", "<column-row-value>"]
      // other private columns
    ]
  )),
  // .. other fields
}

Inserts and updates are supported via Nostr's regular signing operations and deletions via NIP-09.

The pubkey MAY be own by the system and represent several users from that system.