wandering-inndex / inndex

A fan-made index for The Wandering Inn, a universe by pirateaba.
https://inndex.omg.lol
Other
2 stars 0 forks source link

[FR] Add a Character Sheets with Spoiler-level Selection #5

Open njncalub opened 1 year ago

njncalub commented 1 year ago

Description

I want a page that will show all the related information of a Character but only up to a certain point in the story.

Motivation

There are plenty of spoilers in the wiki and the chats. If there is a way to check only the relevant information that will not spoil you, I think that would be great.

Suggested Implementation

Schema v0.1.0:

flowchart LR
  chapter([Chapter])
  webVolume([Web Volume])
  audibleAudioBook([Audible Audiobook])
  kindleBook([Kindle Book])
  character([Character])
  name([Name])
  species([Species])
  group([Group])
  location([Location])
  skill([Skill])
  systemClass([Class])
  item([Item])

  character-- OF_SPECIES -->species
  character-- ALSO_KNOWN_AS ---name
  character-- PART_OF_GROUP -->group
  character-- RESIDES_IN -->location
  character-- INTRODUCED_IN -->chapter
  character-- APPEARS_IN -->chapter
  character-- HAS_SKILL -->skill
  character-- HAS_CLASS -->systemClass
  character-- OWNS_ITEM -->item

  location-- LOCATED_IN -->location
  chapter-- PART_OF_VOLUME --> webVolume
  chapter-- PART_OF_AUDIOBOOK --> audibleAudioBook
  chapter-- PART_OF_EBOOK --> kindleBook

Schema v0.2.0:

twi-graph-sample

A ChapterInfo will be connected to a Character and Chapter, and that will allow us to view a character's information from the beginning of the story to a specific chapter:

// Sample query to get all the available information of
// a Character named "Erin Solstice" before WebVolume 2.
// (WebVolume 1 comprises of Chapters #1 to #65).

MATCH
  (c:Character)-[:NEW_INFO]->(ci:ChapterInfo)-[:FROM_CHAPTER]->(ch:Chapter)
WHERE
  c.name = "Erin Solstice"
  AND ch.webNovelOrder < 66
  AND ch.metaShow = true
RETURN info

All the data will be saved in https://github.com/wandering-inndex/seed-data/, as plain text files. And a workflow will process the said files and update the Neo4j database.

Alternate Implementations

Create a time-based wiki platform. But that will be a nightmare to implement, as new data can come in anytime.