* Some reasons this needs to exist for it to run on my machine? I don't think it would hurt to have it in other machines so
* Add options to member model
* Add Privacy to member embed
* Added member privacy display list
* Update database settings
* apparetnly this is nolonger needed?
* Fix sql call
* Fix more sql errors
* Added in settings control
* Add all subject to system privacy
* Basic API Privacy
* Name privacy in logs
* update todo
* remove CheckReadMemberPermission
* Added name privacy to log embed
* update todo
* Update todo
* Update api to handle privacy
* update todo
* Update systemlist full to respect privacy (as well as system list)
* include colour as option for member privacy subject
* move todo file (why was it there?)
* Update TODO.md
* Update TODO.md
* Update TODO.md
* Deleted to create pr
* Update command usage and add to the command tree
* Make api respect created privacy
* Add editing privacy through the api
* Fix pronoun privacy field in api
* Fix info leak of display name in api
* deprecate privacy field in api
* Deprecate privacy diffrently
* Update API
* Update documentation
* Update documentation
* Remove comment in yml
* Update userguide
* Update migration (fix typo in 5.sql too)
* Sanatize names
* some full stops
* Fix after merge
* update migration
* update schema version
* update edit command
* update privacy filter
* fix a dumb mistake
* clarify on what name privacy does
* make it easier on someone else
* Update docs
* Comment out unused code
* Add aliases for `member privacy all public` and `member privacy all private`
- DbConnectionFactory renamed to "Database", will now be the primary entry point for DB stuff
- Created IPKConnection interface mostly containing async extensions to IDbConnection, use this going forward
- Reworked the Connection/Command wrappers (that have performance/logging extensions)
- Probably more stuff that I forgot???
- Allowed adding ephemeral(ish) views and functions
- Moved message_count to a concrete database field
- Moved most proxy logic to a stored procedure
- Moved database files around and refactored schema manager
This does a *lot* of things. Essentially, it replaces the existing
individual proxy- and autoproxy caches on the bot end with a
global cache (in Core) that handles all the caching at once, and
automatically invalidates the cache once something changes in the
datastore.
This allows us to do proxying and autoproxying with *zero database
queries* (best-case).
Necessary database migrations for this commit:
alter table servers add column log_blacklist bigint[] not null default array[]::bigint[];
alter table servers add column blacklist bigint[] not null default array[]::bigint[];
The frontpercent command already accepted time patterns (e.g. 9pm), but these were always being interpreted as UTC regardless of the system's configured zone. Furthermore, the time wasn't being nudged to the previous day, so if you tried to do pk;s fp 6pm at 5pm UTC, it would complain about the date being in the future instead of just showing you since 6pm yesterday.
The system zone is now respected and nudging enabled in the same manner as pk;sw move.
The member length limit is now long enough that it's unlikely to
hit the cap by accident. An error will still be displayed if you
attempt to perform a message proxy.
Some of the command rewrite changes resulted in the response messages for importing a system being swapped. When importing without an existing system (ctx.System == null), we want to display the "new system" message. Otherwise, show the count added/modified.
A given system can now have up to 1000 members. Within 50 members of that limit, a warning will display whenever a new member is created via the bot. Once the limit is reached, a final warning will appear indicating that no additional members can be created unless members are first deleted. Attempting to create a new member at that point by any method will result in an error message indicating that the limit has been reached.
Respecting this in pk;import required some restructuring to tease apart which members already exist and which ones need to be created prior to creating any members as it seems preferable to fail early and give the user the ability to intervene rather than pushing the system to the member cap and requiring manual deletion of "lower priority" members before others can be created. One consequence of the restructure is that existing members are being read in bulk which is a performance improvement of 25-70% depending on how many switches need to be imported (the more members you have, the more noticeable this is).