diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2019-01-04 17:41:27 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2019-01-04 17:41:27 -0800 |
commit | 084e476957ce80b456dcf0575de4efc7331d34f9 (patch) | |
tree | 5377ef32c140ef6a0b73d67296eeacf17edcabc9 | |
parent | d7b0a156d2a3a21e2bf5afc3e4b97e7cf1044248 (diff) | |
download | fatcat-084e476957ce80b456dcf0575de4efc7331d34f9.tar.gz fatcat-084e476957ce80b456dcf0575de4efc7331d34f9.zip |
clean up notes a tiny bit
-rw-r--r-- | notes/UNSORTED.txt | 40 | ||||
-rw-r--r-- | notes/golang.txt | 45 | ||||
-rw-r--r-- | notes/ideas/bot_tools.txt (renamed from notes/bot_tools.txt) | 0 | ||||
-rw-r--r-- | notes/ideas/domains.txt (renamed from notes/domains.txt) | 0 | ||||
-rw-r--r-- | notes/ideas/more_api_patterns.txt (renamed from notes/more_api_patterns.txt) | 0 | ||||
-rw-r--r-- | notes/ideas/thoughts.txt (renamed from notes/thoughts.txt) | 0 |
6 files changed, 40 insertions, 45 deletions
diff --git a/notes/UNSORTED.txt b/notes/UNSORTED.txt new file mode 100644 index 00000000..3960f5eb --- /dev/null +++ b/notes/UNSORTED.txt @@ -0,0 +1,40 @@ + +Not allowed to PUT edits to the same entity in the same editgroup. If you want +to update an edit, need to delete the old one first. + +The state depends only on the current entity state, not any redirect. This +means that if the target of a redirect is delted, the redirecting entity is +still "redirect", not "deleted". + +Redirects-to-redirects are not allowed; this is enforced when the editgroup is +accepted, to prevent race conditions. + +Redirects to "work-in-progress" (WIP) rows are disallowed at update time (and +not re-checked at accept time). + +"ident table" parameters are ignored for entity updates. This is so clients can +simply re-use object instantiations. + +The "state" parameter of an entity body is used as a flag when deciding whether +to do non-normal updates (eg, redirect or undelete, as opposed to inserting a +new revision). + +In the API, if you, eg, expand=files on a redirected release, you will get +files that point to the *target* release entity. If you use the /files endpoint +(instead of expand), you will get the files pointing to the redirected entity +(which probably need updating!). Also, if you expand=files on the target +entity, you *won't* get the files pointing to the redirected release. A +high-level merge process might make these changes at the same time? Or at least +tag at edit review time. A sweeper task can look for and auto-correct such +redirects after some delay period. + +=> it would not be too hard to update get_release_files to check for such + redirects; could be handled by request flag? + +`prev_rev` is naively set to the most-recent previous state. If the curent +state was deleted or a redirect, it is set to null. + +This parameter is not checked/enforced at edit accept time (but could be, and +maybe introduce `prev_redirect`, for race detection). Or, could have ident +point to most-recent edit, and have edits point to prev, for firmer control. + diff --git a/notes/golang.txt b/notes/golang.txt deleted file mode 100644 index 404741e8..00000000 --- a/notes/golang.txt +++ /dev/null @@ -1,45 +0,0 @@ - -## Database Schema / ORM / Generation - -start simple, with pg (or sqlx if we wanted to be DB-agnostic): -- pq: basic postgres driver and ORM (similar to sqlalchemy?) -- sqlx: small extensions to builtin sql; row to struct mapping - -debug postgres with gocmdpev - -later, if code is too duplicated, look in to sqlboiler (first) or xo (second): -- https://github.com/xo/xo -- https://github.com/volatiletech/sqlboiler - -later, to do migrations, use goose, or consider alembic (python) for -auto-generation -- https://github.com/steinbacher/goose -- possibly auto-generate with python alembic - -for identifiers, consider either built-in postgres UUID, or: -- https://github.com/rs/xid -- https://github.com/oklog/ulid - like a UUID, but base32 and "sortable" (timestamp + random) - -## API In General - -Hope to use Kong for authentication. - -start with oauth2... orcid? - -## OpenAPI/Swagger - -go-swagger (OpenAPI 2.0): -- generate initial API server skeleton from a yaml definition -- export updated yaml from code after changes -- web UI for documentation -- templating/references -- auto-generate client (in golang) - -also look at ReDoc as a UI; all in-brower generated from JSON (react) - -## Non-API stuff - -- logrus structured logging (or zap?) -- testify tests (and assert?) -- viper config diff --git a/notes/bot_tools.txt b/notes/ideas/bot_tools.txt index cf465bde..cf465bde 100644 --- a/notes/bot_tools.txt +++ b/notes/ideas/bot_tools.txt diff --git a/notes/domains.txt b/notes/ideas/domains.txt index 8556494e..8556494e 100644 --- a/notes/domains.txt +++ b/notes/ideas/domains.txt diff --git a/notes/more_api_patterns.txt b/notes/ideas/more_api_patterns.txt index ca61ac81..ca61ac81 100644 --- a/notes/more_api_patterns.txt +++ b/notes/ideas/more_api_patterns.txt diff --git a/notes/thoughts.txt b/notes/ideas/thoughts.txt index c01c0d37..c01c0d37 100644 --- a/notes/thoughts.txt +++ b/notes/ideas/thoughts.txt |