summaryrefslogtreecommitdiff
path: root/internal/gtsmodel
diff options
context:
space:
mode:
authorLibravatar tsmethurst <tobi.smethurst@protonmail.com>2021-03-15 16:15:14 +0100
committerLibravatar tsmethurst <tobi.smethurst@protonmail.com>2021-03-15 16:15:14 +0100
commit1eecc2688c5eef14b8834c8f58a46b2f8e6bc845 (patch)
tree9e9f34745028cb0ef2330b421fef57e68db8d4d4 /internal/gtsmodel
parentmove mastotypes (diff)
downloadgotosocial-1eecc2688c5eef14b8834c8f58a46b2f8e6bc845.tar.xz
bit of experimenting and tidying
Diffstat (limited to 'internal/gtsmodel')
-rw-r--r--internal/gtsmodel/README.md5
-rw-r--r--internal/gtsmodel/account.go85
-rw-r--r--internal/gtsmodel/status.go44
3 files changed, 134 insertions, 0 deletions
diff --git a/internal/gtsmodel/README.md b/internal/gtsmodel/README.md
new file mode 100644
index 000000000..12a05ddec
--- /dev/null
+++ b/internal/gtsmodel/README.md
@@ -0,0 +1,5 @@
+# gtsmodel
+
+This package contains types used *internally* by GoToSocial and added/removed/selected from the database. As such, they contain sensitive fields which should **never** be serialized or reach the API level. Use the [mastotypes](../../pkg/mastotypes) package for that.
+
+The annotation used on these structs is for handling them via the go-pg ORM. See [here](https://pg.uptrace.dev/models/).
diff --git a/internal/gtsmodel/account.go b/internal/gtsmodel/account.go
new file mode 100644
index 000000000..7cd942ee8
--- /dev/null
+++ b/internal/gtsmodel/account.go
@@ -0,0 +1,85 @@
+/*
+ GoToSocial
+ Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database.
+// These types should never be serialized and/or sent out via public APIs, as they contain sensitive information.
+// The annotation used on these structs is for handling them via the go-pg ORM. See here: https://pg.uptrace.dev/models/
+package gtsmodel
+
+import (
+ "net/url"
+ "time"
+)
+
+// GTSAccount represents a GoToSocial user account
+type GTSAccount struct {
+ GTSAvatar
+ GTSHeader
+ URI string
+ URL string
+ ID string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"`
+ Username string
+ Domain string
+ Secret string
+ PrivateKey string
+ PublicKey string
+ RemoteURL string
+ CreatedAt time.Time `pg:"type:timestamp,notnull"`
+ UpdatedAt time.Time `pg:"type:timestamp,notnull"`
+ Note string
+ DisplayName string
+ SubscriptionExpiresAt time.Time `pg:"type:timestamp"`
+ Locked bool
+ LastWebfingeredAt time.Time `pg:"type:timestamp"`
+ InboxURL string
+ OutboxURL string
+ SharedInboxURL string
+ FollowersURL string
+ Protocol int
+ Memorial bool
+ MovedToAccountID int
+ FeaturedCollectionURL string
+ Fields map[string]string
+ ActorType string
+ Discoverable bool
+ AlsoKnownAs string
+ SilencedAt time.Time `pg:"type:timestamp"`
+ SuspendedAt time.Time `pg:"type:timestamp"`
+ TrustLevel int
+ HideCollections bool
+ SensitizedAt time.Time `pg:"type:timestamp"`
+ SuspensionOrigin int
+}
+
+type GTSAvatar struct {
+ AvatarFileName string
+ AvatarContentType string
+ AvatarFileSize int
+ AvatarUpdatedAt *time.Time `pg:"type:timestamp"`
+ AvatarRemoteURL *url.URL `pg:"type:text"`
+ AvatarStorageSchemaVersion int
+}
+
+type GTSHeader struct {
+ HeaderFileName string
+ HeaderContentType string
+ HeaderFileSize int
+ HeaderUpdatedAt *time.Time `pg:"type:timestamp"`
+ HeaderRemoteURL *url.URL `pg:"type:text"`
+ HeaderStorageSchemaVersion int
+}
diff --git a/internal/gtsmodel/status.go b/internal/gtsmodel/status.go
new file mode 100644
index 000000000..cba8a6ba8
--- /dev/null
+++ b/internal/gtsmodel/status.go
@@ -0,0 +1,44 @@
+/*
+ GoToSocial
+ Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package gtsmodel
+
+import "time"
+
+type GTSStatus struct {
+ ID string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"`
+ URI string
+ URL string
+ Content string
+ CreatedAt time.Time `pg:"type:timestamp,notnull"`
+ UpdatedAt time.Time `pg:"type:timestamp,notnull"`
+ Local bool
+ AccountID string
+ InReplyToID string
+ BoostOfID string
+ ContentWarning string
+ Visibility *Visibility
+}
+
+type Visibility struct {
+ Direct bool
+ Followers bool
+ Local bool
+ Unlisted bool
+ Public bool
+}