Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add children recursive endpoint #2431

Merged
merged 16 commits into from
Nov 24, 2023

Conversation

elocremarc
Copy link
Contributor

@elocremarc elocremarc commented Sep 7, 2023

We have the recursive endpoint /content/ which opened up quite a lot of creative ability. With the addition of provenance I think it would be really cool to have a way for a parent inscription to be aware of any of its decedents. I propose we add the recursive endpoint /children/:inscriptionId.

This could be used for a parent inscription to be a gallery of all of its children. It also gives the ability for creators to make inscriptions where both the creator and the owner can take part in recursively creating the content of what is on a parent inscription. Other benefits allow more complex HTML inscriptions where say a CSS file could be inscribed as a child or even updated potentially.

Edit:
For this to work you get the inscriptionId of the parent with javascript and then feed it into the endpoint so that it can see what inscriptions it has as children. So it would be /children/<Parent_InscriptionId>

Example:

<!DOCTYPE html>
<html>
<body>
  <script>
    fetch(`${window.location.origin}/children/${window.location.pathname.split('/').pop()}`)
      .then(response => response.json())
      .then(data => console.log(data))
      // Console logs all the children inscribed later.
  </script>
</body>
</html>

@rot13maxi
Copy link
Contributor

You wont be able to do static child inscription ids in the parent because there would be a circular dependency when it comes to pre-determining the inscription IDs.

Id suggest you do an endpoint to list the children of a parent. The parent inscription can then have some js that iterates through the list and fetches each one via the content endpoint.

@elocremarc
Copy link
Contributor Author

Id suggest you do an endpoint to list the children of a parent. The parent inscription can then have some js that iterates through the list and fetches each one via the content endpoint.

Yeah that is what this does. You get the inscriptionId of the parent with javascript and then feed it into the endpoint so that it can see what inscriptions it has as children. So it would be /children/<Parent_InscriptionId>

@rot13maxi
Copy link
Contributor

Oh, I misunderstood. I thought the inscription-id in the path was meant to be the child

Fix Tests
@elocremarc elocremarc marked this pull request as ready for review September 7, 2023 23:48
@elocremarc elocremarc changed the title Recursive endpoint /children/:inscriptionId Recursive endpoint /children/:inscriptionId_parent Sep 8, 2023
@elocremarc
Copy link
Contributor Author

elocremarc commented Sep 15, 2023

I think I should change this to not return all the inscriptions and only return 1 at a time.
/children/:inscriptionId_parent/:index
See #2452 for new approach.

@BitTogether
Copy link

I love this! FINALLY I can make dynamic art where the collector and artist can make art together like never before possible!

@raphjaph
Copy link
Collaborator

raphjaph commented Sep 30, 2023

Since we are adding more and more recursive endpoints and these will start to clash with existing html endpoints, what do you think about putting all new ones under /-/?

#2476

@zmeyer44
Copy link
Contributor

zmeyer44 commented Oct 4, 2023

Since we are adding more and more recursive endpoints and these will start to clash with existing html endpoints, what do you think about putting all new ones under /-/?

#2476

Strictly from an aesthetic point of view, I'd be hesitant to add the /-/ prefix. I don't see why we couldn't continue to just use the base paths. Given that these endpoints will be utilized in sandboxed iframes, it should be easy enough for clients to ensure they are managing conflicts on their end. It is also a bit odd to have some recursive endpoints with the /-/ and some without.

src/subcommand/server.rs Show resolved Hide resolved
src/subcommand/server.rs Show resolved Hide resolved
src/subcommand/server.rs Outdated Show resolved Hide resolved
@raphjaph raphjaph changed the title Recursive endpoint /children/:inscriptionId_parent Add children recursive endpoint Nov 24, 2023
Copy link
Collaborator

@raphjaph raphjaph left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@casey casey enabled auto-merge (squash) November 24, 2023 20:24
@casey casey merged commit 59a8f6b into ordinals:master Nov 24, 2023
6 checks passed
thedoublejay pushed a commit to sadoprotocol/ord that referenced this pull request Nov 27, 2023
* Fix lost sats bug (ordinals#2666)

* Add Hindi version of handbook (ordinals#2648)

* Remove Index::index_block_inscription_numbers (ordinals#2667)

* Hide protocol inscriptions (ordinals#2674)

* Don't color links in headers (ordinals#2678)

* Add inscription charms (ordinals#2681)

* Group rune server tests (ordinals#2685)

* Add inscription compression (ordinals#1713)

* Fix media table formatting (ordinals#2686)

* Update schema version for charms (ordinals#2687)

* Fix unbound outpoint server error (ordinals#2479)

* Add binary media type (ordinals#2671)

* Clean up install.sh (ordinals#2669)

* Add /collections Page (ordinals#2561)

* Preview font inscriptions (ordinals#2692)

* Only load used language highlight module in code preview (ordinals#2696)

* Only try to create the database if it wasn't found (ordinals#2703)

* Move postage into batch file (ordinals#2705)

* Add destination field to batch (ordinals#2701)

* Use sequence numbers database keys (ordinals#2664)

* Update redb to 1.4.0 (ordinals#2714)

* Refactor inscriptions paginations (ordinals#2715)

* Display table stats in `ord index info` (ordinals#2711)

* Use redb's recovery callback API (ordinals#2584)

* Allow setting CSP origin (ordinals#2708)

* Remove default file path from `ord index export --tsv` (ordinals#2717)

* Use icons in nav bar (ordinals#2722)

* Add Debian packaging instructions (ordinals#2725)

* Add Homebrew install instructions to readme (ordinals#2726)

* Add sat recursive endpoints with index and pagination (ordinals#2680)

* Only accept sat number in recursive endpoint (ordinals#2732)

* Fix typo in docs/src/inscriptions/metadata.md (ordinals#2731)

* Add docs for metadata recursive endpoint (ordinals#2734)

* Remove `RUNE` from <h1> on /rune (ordinals#2728)

* Add /r/children recursive endpoint (ordinals#2431)

* Add docs and examples for sat recursive endpoint (ordinals#2735)

* Ignore flaky test (ordinals#2742)

* Update docs to include all fields, including content-encoding (ordinals#2740)

* Add docs for child recursive endpoint (ordinals#2743)

* Hide JSON and .btc (ordinals#2744)

* Release 0.12.0 (ordinals#2746)

---------

Co-authored-by: raph <raphjaph@protonmail.com>
Co-authored-by: duttydeedz <142775511+duttydeedz@users.noreply.github.com>
Co-authored-by: Casey Rodarmor <casey@rodarmor.com>
Co-authored-by: liam <31192478+terror@users.noreply.github.com>
Co-authored-by: Eloc <42568538+elocremarc@users.noreply.github.com>
Co-authored-by: Julian Eager <eagr@tutanota.com>
Co-authored-by: ordinally <11798624+veryordinally@users.noreply.github.com>
Co-authored-by: Christopher Berner <me@cberner.com>
Co-authored-by: Rijndael <115941166+rot13maxi@users.noreply.github.com>
Co-authored-by: vuittont60 <81072379+vuittont60@users.noreply.github.com>
thedoublejay pushed a commit to sadoprotocol/ord that referenced this pull request Dec 1, 2023
* Fix lost sats bug (ordinals#2666)

* Add Hindi version of handbook (ordinals#2648)

* Remove Index::index_block_inscription_numbers (ordinals#2667)

* Hide protocol inscriptions (ordinals#2674)

* Don't color links in headers (ordinals#2678)

* Add inscription charms (ordinals#2681)

* Group rune server tests (ordinals#2685)

* Add inscription compression (ordinals#1713)

* Fix media table formatting (ordinals#2686)

* Update schema version for charms (ordinals#2687)

* Fix unbound outpoint server error (ordinals#2479)

* Add binary media type (ordinals#2671)

* Clean up install.sh (ordinals#2669)

* Add /collections Page (ordinals#2561)

* Preview font inscriptions (ordinals#2692)

* Only load used language highlight module in code preview (ordinals#2696)

* Only try to create the database if it wasn't found (ordinals#2703)

* Move postage into batch file (ordinals#2705)

* Add destination field to batch (ordinals#2701)

* Use sequence numbers database keys (ordinals#2664)

* Update redb to 1.4.0 (ordinals#2714)

* Refactor inscriptions paginations (ordinals#2715)

* Display table stats in `ord index info` (ordinals#2711)

* Use redb's recovery callback API (ordinals#2584)

* Allow setting CSP origin (ordinals#2708)

* Remove default file path from `ord index export --tsv` (ordinals#2717)

* Use icons in nav bar (ordinals#2722)

* Add Debian packaging instructions (ordinals#2725)

* Add Homebrew install instructions to readme (ordinals#2726)

* Add sat recursive endpoints with index and pagination (ordinals#2680)

* Only accept sat number in recursive endpoint (ordinals#2732)

* Fix typo in docs/src/inscriptions/metadata.md (ordinals#2731)

* Add docs for metadata recursive endpoint (ordinals#2734)

* Remove `RUNE` from <h1> on /rune (ordinals#2728)

* Add /r/children recursive endpoint (ordinals#2431)

* Add docs and examples for sat recursive endpoint (ordinals#2735)

* Ignore flaky test (ordinals#2742)

* Update docs to include all fields, including content-encoding (ordinals#2740)

* Add docs for child recursive endpoint (ordinals#2743)

* Hide JSON and .btc (ordinals#2744)

* Release 0.12.0 (ordinals#2746)

* Hide all text (ordinals#2753)

* Add batch to preview command (ordinals#2752)

* Add stuttering curse (ordinals#2745)

* Batch inscribe on same sat (ordinals#2749)

* Allow setting the sat to inscribe (ordinals#2765)

* Select further away coins which meet target (ordinals#2724)

* Fix typos (ordinals#2768)

* Add ability to specify sat to batch inscribe (ordinals#2770)

* Add commands to etch and list runes (ordinals#2544)

* Set CSP origin in deploy script (ordinals#2764)

Co-authored-by: raph <raphjaph@protonmail.com>

* Add `public` to /content Cache-Control headers (ordinals#2773)

* Release 0.12.1 (ordinals#2776)

* Bless cursed inscriptions after Jubilee height (ordinals#2656)

* Hide /content/<INSCRIPTION_ID> HTML inscriptions (ordinals#2778)

* Release 0.12.2 (ordinals#2780)

* fix(test): error test from version 0.12.2

---------

Co-authored-by: raph <raphjaph@protonmail.com>
Co-authored-by: duttydeedz <142775511+duttydeedz@users.noreply.github.com>
Co-authored-by: Casey Rodarmor <casey@rodarmor.com>
Co-authored-by: liam <31192478+terror@users.noreply.github.com>
Co-authored-by: Eloc <42568538+elocremarc@users.noreply.github.com>
Co-authored-by: Julian Eager <eagr@tutanota.com>
Co-authored-by: ordinally <11798624+veryordinally@users.noreply.github.com>
Co-authored-by: Christopher Berner <me@cberner.com>
Co-authored-by: Rijndael <115941166+rot13maxi@users.noreply.github.com>
Co-authored-by: vuittont60 <81072379+vuittont60@users.noreply.github.com>
Co-authored-by: gmart7t2 <49558347+gmart7t2@users.noreply.github.com>
Co-authored-by: xiaolou86 <20718693+xiaolou86@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants