summaryrefslogtreecommitdiff
path: root/internal/gtsmodel/instance.go
blob: ca2857b95ce9af2956fa6368fda31e30286293fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package gtsmodel

import "time"

// Instance represents a federated instance, either local or remote.
type Instance struct {
	// ID of this instance in the database
	ID string `bun:"type:CHAR(26),pk,notnull,unique"`
	// Instance domain eg example.org
	Domain string `bun:",pk,notnull,unique"`
	// Title of this instance as it would like to be displayed.
	Title string `bun:",nullzero"`
	// base URI of this instance eg https://example.org
	URI string `bun:",notnull,unique"`
	// When was this instance created in the db?
	CreatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
	// When was this instance last updated in the db?
	UpdatedAt time.Time `bun:",nullzero,notnull,default:current_timestamp"`
	// When was this instance suspended, if at all?
	SuspendedAt time.Time `bun:",nullzero"`
	// ID of any existing domain block for this instance in the database
	DomainBlockID string       `bun:"type:CHAR(26),nullzero"`
	DomainBlock   *DomainBlock `bun:"rel:belongs-to"`
	// Short description of this instance
	ShortDescription string `bun:",nullzero"`
	// Longer description of this instance
	Description string `bun:",nullzero"`
	// Terms and conditions of this instance
	Terms string `bun:",nullzero"`
	// Contact email address for this instance
	ContactEmail string `bun:",nullzero"`
	// Username of the contact account for this instance
	ContactAccountUsername string `bun:",nullzero"`
	// Contact account ID in the database for this instance
	ContactAccountID string   `bun:"type:CHAR(26),nullzero"`
	ContactAccount   *Account `bun:"rel:belongs-to"`
	// Reputation score of this instance
	Reputation int64 `bun:",notnull,default:0"`
	// Version of the software used on this instance
	Version string `bun:",nullzero"`
}