summaryrefslogtreecommitdiff
path: root/internal/model
diff options
context:
space:
mode:
Diffstat (limited to 'internal/model')
-rw-r--r--internal/model/account.go80
-rw-r--r--internal/model/avatar.go33
-rw-r--r--internal/model/header.go33
3 files changed, 146 insertions, 0 deletions
diff --git a/internal/model/account.go b/internal/model/account.go
new file mode 100644
index 000000000..55ee62773
--- /dev/null
+++ b/internal/model/account.go
@@ -0,0 +1,80 @@
+/*
+ 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 model
+
+import (
+ "net/url"
+ "time"
+)
+
+// Account represents a user account
+type Account struct {
+ Avatar
+ Header
+ ID int `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"`
+ Username string
+ Domain string
+ Secret string
+ PrivateKey string
+ PublicKey string
+ RemoteURL *url.URL `pg:"type:text"`
+ SalmonURL *url.URL `pg:"type:text"`
+ HubURL *url.URL `pg:"type:text"`
+ CreatedAt time.Time `pg:"type:timestamp,notnull"`
+ UpdatedAt time.Time `pg:"type:timestamp,notnull"`
+ Note string
+ DisplayName string
+ URI *url.URL `pg:"type:text"`
+ URL *url.URL `pg:"type:text"`
+ SubscriptionExpiresAt time.Time `pg:"type:timestamp"`
+ Locked bool
+ LastWebfingeredAt time.Time `pg:"type:timestamp"`
+ InboxURL *url.URL `pg:"type:text"`
+ OutboxURL *url.URL `pg:"type:text"`
+ SharedInboxURL *url.URL `pg:"type:text"`
+ FollowersURL *url.URL `pg:"type:text"`
+ Protocol int
+ Memorial bool
+ MovedToAccountID int
+ FeaturedCollectionURL *url.URL `pg:"type:text"`
+ 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
+ DevicesURL *url.URL `pg:"type:text"`
+ SensitizedAt time.Time `pg:"type:timestamp"`
+ SuspensionOrigin int
+}
+
+func StubAccount() *Account {
+
+ remoteURL, _ := url.Parse("https://example.org/@someuser")
+
+ return &Account{
+ Username: "some_user",
+ Domain: "example.org",
+ RemoteURL: remoteURL,
+ CreatedAt: time.Now(),
+ UpdatedAt: time.Now(),
+ }
+}
diff --git a/internal/model/avatar.go b/internal/model/avatar.go
new file mode 100644
index 000000000..637fa5e3c
--- /dev/null
+++ b/internal/model/avatar.go
@@ -0,0 +1,33 @@
+/*
+ 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 model
+
+import (
+ "net/url"
+ "time"
+)
+
+type Avatar struct {
+ AvatarFileName string
+ AvatarContentType string
+ AvatarFileSize int
+ AvatarUpdatedAt *time.Time `pg:"type:timestamp"`
+ AvatarRemoteURL *url.URL `pg:"type:text"`
+ AvatarStorageSchemaVersion int
+}
diff --git a/internal/model/header.go b/internal/model/header.go
new file mode 100644
index 000000000..edaa7a2dc
--- /dev/null
+++ b/internal/model/header.go
@@ -0,0 +1,33 @@
+/*
+ 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 model
+
+import (
+ "net/url"
+ "time"
+)
+
+type Header struct {
+ HeaderFileName string
+ HeaderContentType string
+ HeaderFileSize int
+ HeaderUpdatedAt *time.Time `pg:"type:timestamp"`
+ HeaderRemoteURL *url.URL `pg:"type:text"`
+ HeaderStorageSchemaVersion int
+}