-
-
Notifications
You must be signed in to change notification settings - Fork 349
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prune unnecessary nullzeros, fixup db tags #200
Merged
tsmethurst
merged 6 commits into
superseriousbusiness:main
from
NyaaaWhatsUpDoc:bugfix/prune-unnecessary-nullzeros
Sep 10, 2021
Merged
Changes from 4 commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
f445c98
prune gtsmodel.Account bun tags, add note to gtsmodel dir
NyaaaWhatsUpDoc 0f990d0
further database tag fixes
NyaaaWhatsUpDoc b5e13a7
more db tag fixups
NyaaaWhatsUpDoc 01a7296
fix removing nullzero for account timestamps...
NyaaaWhatsUpDoc d895e5f
add nullzero back to accountid tag
NyaaaWhatsUpDoc 9488f34
rename gtsmodel readme
NyaaaWhatsUpDoc File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
A note on when we should set data structures linked to objects in the database to use the | ||
bun `nullzero` tag -- this should only be done if the member type is a pointer, or if the | ||
this primitive type is literally invalid with an empty value (e.g. media IDs which when | ||
empty signifies a null database value, compared to say an account note which when empty | ||
could mean either an empty note OR null database value). | ||
|
||
Obviously it is a little more complex than this in practice, but keep it in mind! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,7 +29,7 @@ import ( | |
|
||
// Account represents either a local or a remote fediverse account, gotosocial or otherwise (mastodon, pleroma, etc). | ||
type Account struct { | ||
ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database | ||
ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,notnull,unique"` // id of this item in the database | ||
CreatedAt time.Time `validate:"-" bun:"type:timestamp,nullzero,notnull,default:current_timestamp"` // when was item created | ||
UpdatedAt time.Time `validate:"-" bun:"type:timestamp,nullzero,notnull,default:current_timestamp"` // when was item last updated | ||
Username string `validate:"required" bun:",nullzero,notnull,unique:userdomain"` // Username of the account, should just be a string of [a-zA-Z0-9_]. Can be added to domain to create the full username in the form ``[username]@[domain]`` eg., ``[email protected]``. Username and domain should be unique *with* each other | ||
|
@@ -40,18 +40,18 @@ type Account struct { | |
HeaderMediaAttachmentID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Database ID of the media attachment, if present | ||
HeaderMediaAttachment *MediaAttachment `validate:"-" bun:"rel:belongs-to"` // MediaAttachment corresponding to headerMediaAttachmentID | ||
HeaderRemoteURL string `validate:"omitempty,url" bun:",nullzero"` // For a non-local account, where can the header be fetched? | ||
DisplayName string `validate:"-" bun:",nullzero"` // DisplayName for this account. Can be empty, then just the Username will be used for display purposes. | ||
DisplayName string `validate:"-" bun:""` // DisplayName for this account. Can be empty, then just the Username will be used for display purposes. | ||
Fields []Field `validate:"-"` // a key/value map of fields that this account has added to their profile | ||
Note string `validate:"-" bun:",nullzero"` // A note that this account has on their profile (ie., the account's bio/description of themselves) | ||
Memorial bool `validate:"-" bun:",nullzero,default:false"` // Is this a memorial account, ie., has the user passed away? | ||
AlsoKnownAs string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account is associated with x account id | ||
Note string `validate:"-" bun:""` // A note that this account has on their profile (ie., the account's bio/description of themselves) | ||
Memorial bool `validate:"-" bun:",default:false"` // Is this a memorial account, ie., has the user passed away? | ||
AlsoKnownAs string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account is associated with x account id (TODO: migrate to be AlsoKnownAsID) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. good idea re: migration |
||
MovedToAccountID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account has moved this account id in the database | ||
Bot bool `validate:"-" bun:",nullzero,default:false"` // Does this account identify itself as a bot? | ||
Reason string `validate:"-" bun:",nullzero"` // What reason was given for signing up when this account was created? | ||
Locked bool `validate:"-" bun:",nullzero,default:true"` // Does this account need an approval for new followers? | ||
Discoverable bool `validate:"-" bun:",nullzero,default:false"` // Should this account be shown in the instance's profile directory? | ||
Bot bool `validate:"-" bun:",default:false"` // Does this account identify itself as a bot? | ||
Reason string `validate:"-" bun:""` // What reason was given for signing up when this account was created? | ||
Locked bool `validate:"-" bun:",default:true"` // Does this account need an approval for new followers? | ||
Discoverable bool `validate:"-" bun:",default:false"` // Should this account be shown in the instance's profile directory? | ||
Privacy Visibility `validate:"required_without=Domain,omitempty,oneof=public unlocked followers_only mutuals_only direct" bun:",nullzero"` // Default post privacy for this account | ||
Sensitive bool `validate:"-" bun:",nullzero,default:false"` // Set posts from this account to sensitive by default? | ||
Sensitive bool `validate:"-" bun:",default:false"` // Set posts from this account to sensitive by default? | ||
Language string `validate:"omitempty,bcp47_language_tag" bun:",nullzero,notnull,default:'en'"` // What language does this account post in? | ||
URI string `validate:"required,url" bun:",nullzero,notnull,unique"` // ActivityPub URI for this account. | ||
URL string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // Web URL for this account's profile | ||
|
@@ -68,7 +68,7 @@ type Account struct { | |
SensitizedAt time.Time `validate:"-" bun:"type:timestamp,nullzero"` // When was this account set to have all its media shown as sensitive? | ||
SilencedAt time.Time `validate:"-" bun:"type:timestamp,nullzero"` // When was this account silenced (eg., statuses only visible to followers, not public)? | ||
SuspendedAt time.Time `validate:"-" bun:"type:timestamp,nullzero"` // When was this account suspended (eg., don't allow it to log in/post, don't accept media/posts from this account) | ||
HideCollections bool `validate:"-" bun:",nullzero,default:false"` // Hide this account's collections | ||
HideCollections bool `validate:"-" bun:",default:false"` // Hide this account's collections | ||
SuspensionOrigin string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the database entry that caused this account to become suspended -- can be an account ID or a domain block ID | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the issue i found with these
char(26)
values is that if you set zero, and you don't have nullzero set, it will actually just set an empty string of length 26, which totally boobs up some of our logic elsewhere when we're checking for ifx == ""
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't actually intend to set this one, I think it should be the only example of the ID ones being set like this 😅. Nice catch, will fix