mirror of
https://github.com/versia-pub/versia-go.git
synced 2026-03-13 04:29:15 +01:00
refactor!: working WD-4 user discovery
This commit is contained in:
parent
cf0053312d
commit
61891d891a
91 changed files with 12768 additions and 5562 deletions
|
|
@ -14,10 +14,18 @@ func (Attachment) Fields() []ent.Field {
|
|||
field.Bytes("sha256"),
|
||||
field.Int("size"),
|
||||
|
||||
field.String("blurhash").Optional().Nillable(),
|
||||
field.Int("height").Optional().Nillable(),
|
||||
field.Int("width").Optional().Nillable(),
|
||||
field.Int("fps").Optional().Nillable(),
|
||||
field.String("blurhash").
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.Int("height").
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.Int("width").
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.Int("fps").
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.String("mimeType"),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ type Follow struct{ ent.Schema }
|
|||
|
||||
func (Follow) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Enum("status").Values("pending", "accepted").Default("pending"),
|
||||
field.Enum("status").
|
||||
Values("pending", "accepted").
|
||||
Default("pending"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ type Image struct{ ent.Schema }
|
|||
|
||||
func (Image) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.String("url"),
|
||||
field.String("url").Validate(ValidateURI),
|
||||
field.String("mimeType"),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
71
ent/schema/instance_metadata.go
Normal file
71
ent/schema/instance_metadata.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/edge"
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
type InstanceMetadata struct{ ent.Schema }
|
||||
|
||||
func (InstanceMetadata) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.String("name").NotEmpty(),
|
||||
field.String("description").
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("host").
|
||||
NotEmpty().
|
||||
Unique(),
|
||||
|
||||
field.Bytes("publicKey"),
|
||||
field.String("publicKeyAlgorithm"),
|
||||
field.Bytes("privateKey").Optional(),
|
||||
|
||||
field.String("softwareName").NotEmpty(),
|
||||
field.String("softwareVersion").NotEmpty(),
|
||||
|
||||
field.String("sharedInboxURI").Validate(ValidateURI),
|
||||
field.String("moderatorsURI").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("adminsURI").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.String("logoEndpoint").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("logoMimeType").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("bannerEndpoint").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("bannerMimeType").
|
||||
Validate(ValidateURI).
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.Strings("supportedVersions").Default([]string{}),
|
||||
field.Strings("supportedExtensions").Default([]string{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (InstanceMetadata) Edges() []ent.Edge {
|
||||
return []ent.Edge{
|
||||
edge.To("users", User.Type),
|
||||
|
||||
edge.To("moderators", User.Type),
|
||||
edge.To("admins", User.Type),
|
||||
}
|
||||
}
|
||||
|
||||
func (InstanceMetadata) Mixin() []ent.Mixin {
|
||||
return []ent.Mixin{LysandEntityMixin{}}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/edge"
|
||||
"entgo.io/ent/schema/field"
|
||||
"entgo.io/ent/schema/index"
|
||||
)
|
||||
|
||||
type ServerMetadata struct{ ent.Schema }
|
||||
|
||||
func (ServerMetadata) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.String("name").
|
||||
NotEmpty(),
|
||||
field.String("description").
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.String("version").
|
||||
NotEmpty(),
|
||||
|
||||
field.Strings("supportedExtensions").
|
||||
Default([]string{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (ServerMetadata) Edges() []ent.Edge {
|
||||
return []ent.Edge{
|
||||
edge.To("follower", User.Type).Unique().Required(),
|
||||
edge.To("followee", User.Type).Unique().Required(),
|
||||
}
|
||||
}
|
||||
|
||||
func (ServerMetadata) Indexes() []ent.Index {
|
||||
return []ent.Index{
|
||||
index.Edges("follower", "followee").Unique(),
|
||||
}
|
||||
}
|
||||
|
||||
func (ServerMetadata) Mixin() []ent.Mixin {
|
||||
return []ent.Mixin{LysandEntityMixin{}}
|
||||
}
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
package schema
|
||||
|
||||
import (
|
||||
"crypto/ed25519"
|
||||
"errors"
|
||||
"regexp"
|
||||
|
||||
|
|
@ -20,17 +19,31 @@ type User struct{ ent.Schema }
|
|||
|
||||
func (User) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.String("username").Unique().MaxLen(32).Validate(ValidateUsername),
|
||||
field.Bytes("passwordHash").Optional().Nillable(),
|
||||
field.String("username").
|
||||
Unique().
|
||||
MaxLen(32).
|
||||
Validate(ValidateUsername),
|
||||
field.Bytes("passwordHash").
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.String("displayName").MaxLen(256).Optional().Nillable(),
|
||||
field.String("biography").Optional().Nillable(),
|
||||
field.String("displayName").
|
||||
MaxLen(256).
|
||||
Optional().
|
||||
Nillable(),
|
||||
field.String("biography").
|
||||
Optional().
|
||||
Nillable(),
|
||||
|
||||
field.Bytes("publicKey").GoType(ed25519.PublicKey([]byte{})),
|
||||
field.Bytes("privateKey").GoType(ed25519.PrivateKey([]byte{})).Optional(),
|
||||
field.Bytes("publicKey"),
|
||||
field.String("publicKeyActor"),
|
||||
field.String("publicKeyAlgorithm"),
|
||||
field.Bytes("privateKey").Optional(),
|
||||
|
||||
field.Bool("indexable").Default(true),
|
||||
field.Enum("privacyLevel").Values("public", "restricted", "private").Default("public"),
|
||||
field.Enum("privacyLevel").
|
||||
Values("public", "restricted", "private").
|
||||
Default("public"),
|
||||
|
||||
field.JSON("fields", []lysand.Field{}).Default([]lysand.Field{}),
|
||||
|
||||
|
|
@ -51,6 +64,10 @@ func (User) Edges() []ent.Edge {
|
|||
|
||||
edge.From("authoredNotes", Note.Type).Ref("author"),
|
||||
edge.From("mentionedNotes", Note.Type).Ref("mentions"),
|
||||
|
||||
edge.From("servers", InstanceMetadata.Type).Ref("users"),
|
||||
edge.From("moderatedServers", InstanceMetadata.Type).Ref("moderators"),
|
||||
edge.From("administeredServers", InstanceMetadata.Type).Ref("admins"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue