diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-04-13 16:01:33 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-04-13 16:01:33 -0700 | 
| commit | 5cdd3d34f1932197fdd81d9b03570767f85eebf4 (patch) | |
| tree | e796c37ae36507b978bb63ce83cfb757cb63719d | |
| parent | 0a9d59f33a3bef94f6b57f303fab1fa71cfcafd4 (diff) | |
| download | fatcat-5cdd3d34f1932197fdd81d9b03570767f85eebf4.tar.gz fatcat-5cdd3d34f1932197fdd81d9b03570767f85eebf4.zip | |
notes/docs cleanups
| -rw-r--r-- | notes/basic_ui.txt | 53 | ||||
| -rw-r--r-- | notes/data_model.md | 92 | ||||
| -rw-r--r-- | notes/libs.txt | 15 | ||||
| -rw-r--r-- | notes/notes.txt | 24 | ||||
| -rw-r--r-- | notes/test_works.txt (renamed from notes/test_cases.txt) | 0 | ||||
| -rw-r--r-- | notes/webface_notes.txt | 54 | 
6 files changed, 146 insertions, 92 deletions
| diff --git a/notes/basic_ui.txt b/notes/basic_ui.txt deleted file mode 100644 index 12ad1ecc..00000000 --- a/notes/basic_ui.txt +++ /dev/null @@ -1,53 +0,0 @@ - -# "Add Something" Workflow - -## Add a Work - -Title -Primary Type -Primary Creators/Authors -Description (not an abstract) -Primary/Original Language -Subject/Categorization/Tags -Is a Stub (unpublished/unreleased) - -## Release Information - -Contributors -Date -Container / Part-Of -Publisher -Identifiers -Language -Type / Media -Issue / Volume / Pages / Chapter - -## Anything Else? - -Known file / copy / url -Citations (outbound) - -# Queries / Searches / Views - -Views: work, release, creator, container, publisher - -Lookup by identifier - -# Other Workflows/Editors - -Single-creator-oriented helper to find works and disambiguate authorship - -Bulk author disambiguation helper (find other unresolved authors with same -alias text and select; drag works between columns) - -Bulk query-then-edit UI: search results in a table, edit like a spreadsheet, up -to... dozens? Query and then apply delta (eg, set topic)? Eg, author edits -basic metadata for all their citations all at once. - -Release editor - -Merge containers (and all related releases) -Merge entities (works, releases, etc) -Move release between works -Split entities (works, authors, etc), including linked stuff - diff --git a/notes/data_model.md b/notes/data_model.md new file mode 100644 index 00000000..fe21b533 --- /dev/null +++ b/notes/data_model.md @@ -0,0 +1,92 @@ + +## Cookbook + +To create a new works: + +    login/create account + +    match/lookup on first work; if found, modify not create +    TODO: match/lookup on files? + +    new edit group (under account; wip) +    new edit (under group) + +    match/lookup on all creators +    match/lookup on all refs +      TODO: match/lookup on files? +    match/lookup container + +    new work_rev (linked to edit) +    new work_ident (linked to rev; not-live) +    contributor stubs/links +    new release_rev (linked to work_ident) +    new release_ident (linked to rev; not-live) +    contributor stubs/links +    ref stubs/links +    new file_rev +    new file_ident + +    set edit group state to "review" + +    set edit group state to "accepted" +    set all ident flags to "live" + + +To edit, eg, a contributor: + +    new edit group (under account; wip) +    new edit (under group) + +    create contributor_rev row (and relationship rows) + +    set edit group state to "review" + +    set edit group state to "accepted" +    point ident row to new rev + + +Accept edit group: + +    for each edit: +      update entity ident state (activate, redirect, delete) +      ? mark revision/edit as immutable +      ? append log/changelog row +    update edit group state + +## Entity Schema + +Each entity type has tables: + +    _rev +      core representation of a version of the entity + +    _ident +      persistant, external identifier +      allows merging, unmerging, stable cross-entity references + +    _edit +      represents change metadata for a single change to one ident +      needed because an edit alwasy changes ident, but might not change rev + +    _log +      history of when edits were actually applied +      allows fast lookups of history of an entity (ident) +      unnecessary if we keep a log of edit group accepts? +      punt on this for now + +## Entity States + +    wip (not live; not redirect; has rev) +      activate +    active (live; not redirect; has rev) +      redirect +      delete +    redirect (live; redirect; rev or not) +      split +      delete +    deleted (live; not redirect; no rev) +      redirect +      activate + +    "wip redirect" or "wip deleted" are invalid states + diff --git a/notes/libs.txt b/notes/libs.txt deleted file mode 100644 index ede10bdf..00000000 --- a/notes/libs.txt +++ /dev/null @@ -1,15 +0,0 @@ - -Python -    flask -    sqlalchemy - -Golang -    sqlx (or xorm, or something to match rows to structs) -    go-swagger - -Rust -    diesel - -UI -    tachyons -    choo? diff --git a/notes/notes.txt b/notes/notes.txt deleted file mode 100644 index 4bfa3335..00000000 --- a/notes/notes.txt +++ /dev/null @@ -1,24 +0,0 @@ - -entity_id -    uuid -    revision - -entity_revision -    entity_id -    previous: entity_revision or none -    state: normal, redirect, deletion -    redirect_entity_id: optional -    extra: json blob -    edit_id - -edit -    mutable: boolean -    edit_group -    editor - -edit_group - -editor -    id -    username -    auth/email/etc diff --git a/notes/test_cases.txt b/notes/test_works.txt index bc6ea64a..bc6ea64a 100644 --- a/notes/test_cases.txt +++ b/notes/test_works.txt diff --git a/notes/webface_notes.txt b/notes/webface_notes.txt index 8ed47d0b..37a56c5c 100644 --- a/notes/webface_notes.txt +++ b/notes/webface_notes.txt @@ -1,4 +1,6 @@ +# CSS/JS Libraries +  tachyons is nice for simple css-only stuff, but let's use "Semantic UI" because  it has a bunch of javascript form stuff. @@ -6,3 +8,55 @@ it has a bunch of javascript form stuff.      <script src="https://cdn.jsdelivr.net/semantic-ui/2.2.13/semantic.min.js"></script> +# "Add Something" Workflow + +## Add a Work + +Title +Primary Type +Primary Creators/Authors +Description (not an abstract) +Primary/Original Language +Subject/Categorization/Tags +Is a Stub (unpublished/unreleased) + +## Release Information + +Contributors +Date +Container / Part-Of +Publisher +Identifiers +Language +Type / Media +Issue / Volume / Pages / Chapter + +## Anything Else? + +Known file / copy / url +Citations (outbound) + +# Queries / Searches / Views + +Views: work, release, creator, container, publisher + +Lookup by identifier + +# Other Workflows/Editors + +Single-creator-oriented helper to find works and disambiguate authorship + +Bulk author disambiguation helper (find other unresolved authors with same +alias text and select; drag works between columns) + +Bulk query-then-edit UI: search results in a table, edit like a spreadsheet, up +to... dozens? Query and then apply delta (eg, set topic)? Eg, author edits +basic metadata for all their citations all at once. + +Release editor + +Merge containers (and all related releases) +Merge entities (works, releases, etc) +Move release between works +Split entities (works, authors, etc), including linked stuff + | 
