summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2019-01-04 17:41:27 -0800
committerBryan Newbold <bnewbold@robocracy.org>2019-01-04 17:41:27 -0800
commit084e476957ce80b456dcf0575de4efc7331d34f9 (patch)
tree5377ef32c140ef6a0b73d67296eeacf17edcabc9
parentd7b0a156d2a3a21e2bf5afc3e4b97e7cf1044248 (diff)
downloadfatcat-084e476957ce80b456dcf0575de4efc7331d34f9.tar.gz
fatcat-084e476957ce80b456dcf0575de4efc7331d34f9.zip
clean up notes a tiny bit
-rw-r--r--notes/UNSORTED.txt40
-rw-r--r--notes/golang.txt45
-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