mirror of
https://github.com/versia-pub/versia-go.git
synced 2025-12-06 06:28:18 +01:00
chore: implement instance metadata import
This commit is contained in:
parent
5f9b611921
commit
95cff10def
|
|
@ -47,7 +47,7 @@ type InstanceMetadata struct {
|
||||||
// SoftwareVersion holds the value of the "softwareVersion" field.
|
// SoftwareVersion holds the value of the "softwareVersion" field.
|
||||||
SoftwareVersion string `json:"softwareVersion,omitempty"`
|
SoftwareVersion string `json:"softwareVersion,omitempty"`
|
||||||
// SharedInboxURI holds the value of the "sharedInboxURI" field.
|
// SharedInboxURI holds the value of the "sharedInboxURI" field.
|
||||||
SharedInboxURI string `json:"sharedInboxURI,omitempty"`
|
SharedInboxURI *string `json:"sharedInboxURI,omitempty"`
|
||||||
// ModeratorsURI holds the value of the "moderatorsURI" field.
|
// ModeratorsURI holds the value of the "moderatorsURI" field.
|
||||||
ModeratorsURI *string `json:"moderatorsURI,omitempty"`
|
ModeratorsURI *string `json:"moderatorsURI,omitempty"`
|
||||||
// AdminsURI holds the value of the "adminsURI" field.
|
// AdminsURI holds the value of the "adminsURI" field.
|
||||||
|
|
@ -231,7 +231,8 @@ func (im *InstanceMetadata) assignValues(columns []string, values []any) error {
|
||||||
if value, ok := values[i].(*sql.NullString); !ok {
|
if value, ok := values[i].(*sql.NullString); !ok {
|
||||||
return fmt.Errorf("unexpected type %T for field sharedInboxURI", values[i])
|
return fmt.Errorf("unexpected type %T for field sharedInboxURI", values[i])
|
||||||
} else if value.Valid {
|
} else if value.Valid {
|
||||||
im.SharedInboxURI = value.String
|
im.SharedInboxURI = new(string)
|
||||||
|
*im.SharedInboxURI = value.String
|
||||||
}
|
}
|
||||||
case instancemetadata.FieldModeratorsURI:
|
case instancemetadata.FieldModeratorsURI:
|
||||||
if value, ok := values[i].(*sql.NullString); !ok {
|
if value, ok := values[i].(*sql.NullString); !ok {
|
||||||
|
|
@ -383,8 +384,10 @@ func (im *InstanceMetadata) String() string {
|
||||||
builder.WriteString("softwareVersion=")
|
builder.WriteString("softwareVersion=")
|
||||||
builder.WriteString(im.SoftwareVersion)
|
builder.WriteString(im.SoftwareVersion)
|
||||||
builder.WriteString(", ")
|
builder.WriteString(", ")
|
||||||
builder.WriteString("sharedInboxURI=")
|
if v := im.SharedInboxURI; v != nil {
|
||||||
builder.WriteString(im.SharedInboxURI)
|
builder.WriteString("sharedInboxURI=")
|
||||||
|
builder.WriteString(*v)
|
||||||
|
}
|
||||||
builder.WriteString(", ")
|
builder.WriteString(", ")
|
||||||
if v := im.ModeratorsURI; v != nil {
|
if v := im.ModeratorsURI; v != nil {
|
||||||
builder.WriteString("moderatorsURI=")
|
builder.WriteString("moderatorsURI=")
|
||||||
|
|
|
||||||
|
|
@ -851,6 +851,16 @@ func SharedInboxURIHasSuffix(v string) predicate.InstanceMetadata {
|
||||||
return predicate.InstanceMetadata(sql.FieldHasSuffix(FieldSharedInboxURI, v))
|
return predicate.InstanceMetadata(sql.FieldHasSuffix(FieldSharedInboxURI, v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SharedInboxURIIsNil applies the IsNil predicate on the "sharedInboxURI" field.
|
||||||
|
func SharedInboxURIIsNil() predicate.InstanceMetadata {
|
||||||
|
return predicate.InstanceMetadata(sql.FieldIsNull(FieldSharedInboxURI))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SharedInboxURINotNil applies the NotNil predicate on the "sharedInboxURI" field.
|
||||||
|
func SharedInboxURINotNil() predicate.InstanceMetadata {
|
||||||
|
return predicate.InstanceMetadata(sql.FieldNotNull(FieldSharedInboxURI))
|
||||||
|
}
|
||||||
|
|
||||||
// SharedInboxURIEqualFold applies the EqualFold predicate on the "sharedInboxURI" field.
|
// SharedInboxURIEqualFold applies the EqualFold predicate on the "sharedInboxURI" field.
|
||||||
func SharedInboxURIEqualFold(v string) predicate.InstanceMetadata {
|
func SharedInboxURIEqualFold(v string) predicate.InstanceMetadata {
|
||||||
return predicate.InstanceMetadata(sql.FieldEqualFold(FieldSharedInboxURI, v))
|
return predicate.InstanceMetadata(sql.FieldEqualFold(FieldSharedInboxURI, v))
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,14 @@ func (imc *InstanceMetadataCreate) SetSharedInboxURI(s string) *InstanceMetadata
|
||||||
return imc
|
return imc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetNillableSharedInboxURI sets the "sharedInboxURI" field if the given value is not nil.
|
||||||
|
func (imc *InstanceMetadataCreate) SetNillableSharedInboxURI(s *string) *InstanceMetadataCreate {
|
||||||
|
if s != nil {
|
||||||
|
imc.SetSharedInboxURI(*s)
|
||||||
|
}
|
||||||
|
return imc
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (imc *InstanceMetadataCreate) SetModeratorsURI(s string) *InstanceMetadataCreate {
|
func (imc *InstanceMetadataCreate) SetModeratorsURI(s string) *InstanceMetadataCreate {
|
||||||
imc.mutation.SetModeratorsURI(s)
|
imc.mutation.SetModeratorsURI(s)
|
||||||
|
|
@ -410,9 +418,6 @@ func (imc *InstanceMetadataCreate) check() error {
|
||||||
return &ValidationError{Name: "softwareVersion", err: fmt.Errorf(`ent: validator failed for field "InstanceMetadata.softwareVersion": %w`, err)}
|
return &ValidationError{Name: "softwareVersion", err: fmt.Errorf(`ent: validator failed for field "InstanceMetadata.softwareVersion": %w`, err)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, ok := imc.mutation.SharedInboxURI(); !ok {
|
|
||||||
return &ValidationError{Name: "sharedInboxURI", err: errors.New(`ent: missing required field "InstanceMetadata.sharedInboxURI"`)}
|
|
||||||
}
|
|
||||||
if v, ok := imc.mutation.SharedInboxURI(); ok {
|
if v, ok := imc.mutation.SharedInboxURI(); ok {
|
||||||
if err := instancemetadata.SharedInboxURIValidator(v); err != nil {
|
if err := instancemetadata.SharedInboxURIValidator(v); err != nil {
|
||||||
return &ValidationError{Name: "sharedInboxURI", err: fmt.Errorf(`ent: validator failed for field "InstanceMetadata.sharedInboxURI": %w`, err)}
|
return &ValidationError{Name: "sharedInboxURI", err: fmt.Errorf(`ent: validator failed for field "InstanceMetadata.sharedInboxURI": %w`, err)}
|
||||||
|
|
@ -544,7 +549,7 @@ func (imc *InstanceMetadataCreate) createSpec() (*InstanceMetadata, *sqlgraph.Cr
|
||||||
}
|
}
|
||||||
if value, ok := imc.mutation.SharedInboxURI(); ok {
|
if value, ok := imc.mutation.SharedInboxURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
||||||
_node.SharedInboxURI = value
|
_node.SharedInboxURI = &value
|
||||||
}
|
}
|
||||||
if value, ok := imc.mutation.ModeratorsURI(); ok {
|
if value, ok := imc.mutation.ModeratorsURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
||||||
|
|
@ -846,6 +851,12 @@ func (u *InstanceMetadataUpsert) UpdateSharedInboxURI() *InstanceMetadataUpsert
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (u *InstanceMetadataUpsert) ClearSharedInboxURI() *InstanceMetadataUpsert {
|
||||||
|
u.SetNull(instancemetadata.FieldSharedInboxURI)
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (u *InstanceMetadataUpsert) SetModeratorsURI(v string) *InstanceMetadataUpsert {
|
func (u *InstanceMetadataUpsert) SetModeratorsURI(v string) *InstanceMetadataUpsert {
|
||||||
u.Set(instancemetadata.FieldModeratorsURI, v)
|
u.Set(instancemetadata.FieldModeratorsURI, v)
|
||||||
|
|
@ -1225,6 +1236,13 @@ func (u *InstanceMetadataUpsertOne) UpdateSharedInboxURI() *InstanceMetadataUpse
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (u *InstanceMetadataUpsertOne) ClearSharedInboxURI() *InstanceMetadataUpsertOne {
|
||||||
|
return u.Update(func(s *InstanceMetadataUpsert) {
|
||||||
|
s.ClearSharedInboxURI()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (u *InstanceMetadataUpsertOne) SetModeratorsURI(v string) *InstanceMetadataUpsertOne {
|
func (u *InstanceMetadataUpsertOne) SetModeratorsURI(v string) *InstanceMetadataUpsertOne {
|
||||||
return u.Update(func(s *InstanceMetadataUpsert) {
|
return u.Update(func(s *InstanceMetadataUpsert) {
|
||||||
|
|
@ -1793,6 +1811,13 @@ func (u *InstanceMetadataUpsertBulk) UpdateSharedInboxURI() *InstanceMetadataUps
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (u *InstanceMetadataUpsertBulk) ClearSharedInboxURI() *InstanceMetadataUpsertBulk {
|
||||||
|
return u.Update(func(s *InstanceMetadataUpsert) {
|
||||||
|
s.ClearSharedInboxURI()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (u *InstanceMetadataUpsertBulk) SetModeratorsURI(v string) *InstanceMetadataUpsertBulk {
|
func (u *InstanceMetadataUpsertBulk) SetModeratorsURI(v string) *InstanceMetadataUpsertBulk {
|
||||||
return u.Update(func(s *InstanceMetadataUpsert) {
|
return u.Update(func(s *InstanceMetadataUpsert) {
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,12 @@ func (imu *InstanceMetadataUpdate) SetNillableSharedInboxURI(s *string) *Instanc
|
||||||
return imu
|
return imu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (imu *InstanceMetadataUpdate) ClearSharedInboxURI() *InstanceMetadataUpdate {
|
||||||
|
imu.mutation.ClearSharedInboxURI()
|
||||||
|
return imu
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (imu *InstanceMetadataUpdate) SetModeratorsURI(s string) *InstanceMetadataUpdate {
|
func (imu *InstanceMetadataUpdate) SetModeratorsURI(s string) *InstanceMetadataUpdate {
|
||||||
imu.mutation.SetModeratorsURI(s)
|
imu.mutation.SetModeratorsURI(s)
|
||||||
|
|
@ -609,6 +615,9 @@ func (imu *InstanceMetadataUpdate) sqlSave(ctx context.Context) (n int, err erro
|
||||||
if value, ok := imu.mutation.SharedInboxURI(); ok {
|
if value, ok := imu.mutation.SharedInboxURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
||||||
}
|
}
|
||||||
|
if imu.mutation.SharedInboxURICleared() {
|
||||||
|
_spec.ClearField(instancemetadata.FieldSharedInboxURI, field.TypeString)
|
||||||
|
}
|
||||||
if value, ok := imu.mutation.ModeratorsURI(); ok {
|
if value, ok := imu.mutation.ModeratorsURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
||||||
}
|
}
|
||||||
|
|
@ -978,6 +987,12 @@ func (imuo *InstanceMetadataUpdateOne) SetNillableSharedInboxURI(s *string) *Ins
|
||||||
return imuo
|
return imuo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (imuo *InstanceMetadataUpdateOne) ClearSharedInboxURI() *InstanceMetadataUpdateOne {
|
||||||
|
imuo.mutation.ClearSharedInboxURI()
|
||||||
|
return imuo
|
||||||
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
func (imuo *InstanceMetadataUpdateOne) SetModeratorsURI(s string) *InstanceMetadataUpdateOne {
|
func (imuo *InstanceMetadataUpdateOne) SetModeratorsURI(s string) *InstanceMetadataUpdateOne {
|
||||||
imuo.mutation.SetModeratorsURI(s)
|
imuo.mutation.SetModeratorsURI(s)
|
||||||
|
|
@ -1423,6 +1438,9 @@ func (imuo *InstanceMetadataUpdateOne) sqlSave(ctx context.Context) (_node *Inst
|
||||||
if value, ok := imuo.mutation.SharedInboxURI(); ok {
|
if value, ok := imuo.mutation.SharedInboxURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldSharedInboxURI, field.TypeString, value)
|
||||||
}
|
}
|
||||||
|
if imuo.mutation.SharedInboxURICleared() {
|
||||||
|
_spec.ClearField(instancemetadata.FieldSharedInboxURI, field.TypeString)
|
||||||
|
}
|
||||||
if value, ok := imuo.mutation.ModeratorsURI(); ok {
|
if value, ok := imuo.mutation.ModeratorsURI(); ok {
|
||||||
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
_spec.SetField(instancemetadata.FieldModeratorsURI, field.TypeString, value)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -114,7 +114,7 @@ var (
|
||||||
{Name: "private_key", Type: field.TypeBytes, Nullable: true},
|
{Name: "private_key", Type: field.TypeBytes, Nullable: true},
|
||||||
{Name: "software_name", Type: field.TypeString},
|
{Name: "software_name", Type: field.TypeString},
|
||||||
{Name: "software_version", Type: field.TypeString},
|
{Name: "software_version", Type: field.TypeString},
|
||||||
{Name: "shared_inbox_uri", Type: field.TypeString},
|
{Name: "shared_inbox_uri", Type: field.TypeString, Nullable: true},
|
||||||
{Name: "moderators_uri", Type: field.TypeString, Nullable: true},
|
{Name: "moderators_uri", Type: field.TypeString, Nullable: true},
|
||||||
{Name: "admins_uri", Type: field.TypeString, Nullable: true},
|
{Name: "admins_uri", Type: field.TypeString, Nullable: true},
|
||||||
{Name: "logo_endpoint", Type: field.TypeString, Nullable: true},
|
{Name: "logo_endpoint", Type: field.TypeString, Nullable: true},
|
||||||
|
|
|
||||||
|
|
@ -3071,7 +3071,7 @@ func (m *InstanceMetadataMutation) SharedInboxURI() (r string, exists bool) {
|
||||||
// OldSharedInboxURI returns the old "sharedInboxURI" field's value of the InstanceMetadata entity.
|
// OldSharedInboxURI returns the old "sharedInboxURI" field's value of the InstanceMetadata entity.
|
||||||
// If the InstanceMetadata object wasn't provided to the builder, the object is fetched from the database.
|
// If the InstanceMetadata object wasn't provided to the builder, the object is fetched from the database.
|
||||||
// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
|
// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
|
||||||
func (m *InstanceMetadataMutation) OldSharedInboxURI(ctx context.Context) (v string, err error) {
|
func (m *InstanceMetadataMutation) OldSharedInboxURI(ctx context.Context) (v *string, err error) {
|
||||||
if !m.op.Is(OpUpdateOne) {
|
if !m.op.Is(OpUpdateOne) {
|
||||||
return v, errors.New("OldSharedInboxURI is only allowed on UpdateOne operations")
|
return v, errors.New("OldSharedInboxURI is only allowed on UpdateOne operations")
|
||||||
}
|
}
|
||||||
|
|
@ -3085,9 +3085,22 @@ func (m *InstanceMetadataMutation) OldSharedInboxURI(ctx context.Context) (v str
|
||||||
return oldValue.SharedInboxURI, nil
|
return oldValue.SharedInboxURI, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearSharedInboxURI clears the value of the "sharedInboxURI" field.
|
||||||
|
func (m *InstanceMetadataMutation) ClearSharedInboxURI() {
|
||||||
|
m.sharedInboxURI = nil
|
||||||
|
m.clearedFields[instancemetadata.FieldSharedInboxURI] = struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SharedInboxURICleared returns if the "sharedInboxURI" field was cleared in this mutation.
|
||||||
|
func (m *InstanceMetadataMutation) SharedInboxURICleared() bool {
|
||||||
|
_, ok := m.clearedFields[instancemetadata.FieldSharedInboxURI]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
// ResetSharedInboxURI resets all changes to the "sharedInboxURI" field.
|
// ResetSharedInboxURI resets all changes to the "sharedInboxURI" field.
|
||||||
func (m *InstanceMetadataMutation) ResetSharedInboxURI() {
|
func (m *InstanceMetadataMutation) ResetSharedInboxURI() {
|
||||||
m.sharedInboxURI = nil
|
m.sharedInboxURI = nil
|
||||||
|
delete(m.clearedFields, instancemetadata.FieldSharedInboxURI)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetModeratorsURI sets the "moderatorsURI" field.
|
// SetModeratorsURI sets the "moderatorsURI" field.
|
||||||
|
|
@ -4053,6 +4066,9 @@ func (m *InstanceMetadataMutation) ClearedFields() []string {
|
||||||
if m.FieldCleared(instancemetadata.FieldPrivateKey) {
|
if m.FieldCleared(instancemetadata.FieldPrivateKey) {
|
||||||
fields = append(fields, instancemetadata.FieldPrivateKey)
|
fields = append(fields, instancemetadata.FieldPrivateKey)
|
||||||
}
|
}
|
||||||
|
if m.FieldCleared(instancemetadata.FieldSharedInboxURI) {
|
||||||
|
fields = append(fields, instancemetadata.FieldSharedInboxURI)
|
||||||
|
}
|
||||||
if m.FieldCleared(instancemetadata.FieldModeratorsURI) {
|
if m.FieldCleared(instancemetadata.FieldModeratorsURI) {
|
||||||
fields = append(fields, instancemetadata.FieldModeratorsURI)
|
fields = append(fields, instancemetadata.FieldModeratorsURI)
|
||||||
}
|
}
|
||||||
|
|
@ -4091,6 +4107,9 @@ func (m *InstanceMetadataMutation) ClearField(name string) error {
|
||||||
case instancemetadata.FieldPrivateKey:
|
case instancemetadata.FieldPrivateKey:
|
||||||
m.ClearPrivateKey()
|
m.ClearPrivateKey()
|
||||||
return nil
|
return nil
|
||||||
|
case instancemetadata.FieldSharedInboxURI:
|
||||||
|
m.ClearSharedInboxURI()
|
||||||
|
return nil
|
||||||
case instancemetadata.FieldModeratorsURI:
|
case instancemetadata.FieldModeratorsURI:
|
||||||
m.ClearModeratorsURI()
|
m.ClearModeratorsURI()
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,10 @@ func (InstanceMetadata) Fields() []ent.Field {
|
||||||
field.String("softwareName").NotEmpty(),
|
field.String("softwareName").NotEmpty(),
|
||||||
field.String("softwareVersion").NotEmpty(),
|
field.String("softwareVersion").NotEmpty(),
|
||||||
|
|
||||||
field.String("sharedInboxURI").Validate(ValidateURI),
|
field.String("sharedInboxURI").
|
||||||
|
Validate(ValidateURI).
|
||||||
|
Optional().
|
||||||
|
Nillable(),
|
||||||
field.String("moderatorsURI").
|
field.String("moderatorsURI").
|
||||||
Validate(ValidateURI).
|
Validate(ValidateURI).
|
||||||
Optional().
|
Optional().
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -14,6 +14,7 @@ require (
|
||||||
github.com/google/uuid v1.6.0
|
github.com/google/uuid v1.6.0
|
||||||
github.com/jackc/pgx/v5 v5.6.0
|
github.com/jackc/pgx/v5 v5.6.0
|
||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
|
github.com/ldez/mimetype v0.3.0
|
||||||
github.com/nats-io/nats.go v1.36.0
|
github.com/nats-io/nats.go v1.36.0
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/rs/zerolog v1.33.0
|
github.com/rs/zerolog v1.33.0
|
||||||
|
|
@ -43,7 +44,6 @@ require (
|
||||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
||||||
github.com/jackc/puddle/v2 v2.2.1 // indirect
|
github.com/jackc/puddle/v2 v2.2.1 // indirect
|
||||||
github.com/klauspost/compress v1.17.9 // indirect
|
github.com/klauspost/compress v1.17.9 // indirect
|
||||||
github.com/ldez/mimetype v0.3.0 // indirect
|
|
||||||
github.com/leodido/go-urn v1.4.0 // indirect
|
github.com/leodido/go-urn v1.4.0 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import (
|
||||||
type InstanceMetadata struct {
|
type InstanceMetadata struct {
|
||||||
*ent.InstanceMetadata
|
*ent.InstanceMetadata
|
||||||
|
|
||||||
|
URI *versiautils.URL
|
||||||
|
|
||||||
Moderators []User
|
Moderators []User
|
||||||
ModeratorsCollection *versiautils.URL
|
ModeratorsCollection *versiautils.URL
|
||||||
|
|
||||||
|
|
@ -35,9 +37,14 @@ func NewInstanceMetadata(dbData *ent.InstanceMetadata) (*InstanceMetadata, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if n.SharedInbox, err = versiautils.ParseURL(dbData.SharedInboxURI); err != nil {
|
if n.URI, err = versiautils.ParseURL(dbData.URI); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if dbData.SharedInboxURI != nil {
|
||||||
|
if n.SharedInbox, err = versiautils.ParseURL(*dbData.SharedInboxURI); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
if dbData.ModeratorsURI != nil {
|
if dbData.ModeratorsURI != nil {
|
||||||
if n.ModeratorsCollection, err = versiautils.ParseURL(*dbData.ModeratorsURI); err != nil {
|
if n.ModeratorsCollection, err = versiautils.ParseURL(*dbData.ModeratorsURI); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"git.devminer.xyz/devminer/unitel"
|
"git.devminer.xyz/devminer/unitel"
|
||||||
"github.com/go-logr/logr"
|
"github.com/go-logr/logr"
|
||||||
|
"github.com/ldez/mimetype"
|
||||||
"github.com/versia-pub/versia-go/ent"
|
"github.com/versia-pub/versia-go/ent"
|
||||||
"github.com/versia-pub/versia-go/ent/instancemetadata"
|
"github.com/versia-pub/versia-go/ent/instancemetadata"
|
||||||
"github.com/versia-pub/versia-go/internal/entity"
|
"github.com/versia-pub/versia-go/internal/entity"
|
||||||
|
|
@ -50,14 +51,76 @@ func (i *InstanceMetadataRepositoryImpl) GetByHost(ctx context.Context, host str
|
||||||
return entity.NewInstanceMetadata(m)
|
return entity.NewInstanceMetadata(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *InstanceMetadataRepositoryImpl) ImportFromVersiaByURI(ctx context.Context, uri *versiautils.URL) (*entity.InstanceMetadata, error) {
|
func (i *InstanceMetadataRepositoryImpl) Resolve(ctx context.Context, host string) (*entity.InstanceMetadata, error) {
|
||||||
s := i.telemetry.StartSpan(ctx, "function", "repo_impls/InstanceMetadataRepositoryImpl.ImportFromVersiaByURI").
|
s := i.telemetry.StartSpan(ctx, "function", "repo_impls/InstanceMetadataRepositoryImpl.Resolve").
|
||||||
AddAttribute("uri", uri.String())
|
AddAttribute("host", host)
|
||||||
defer s.End()
|
defer s.End()
|
||||||
ctx = s.Context()
|
ctx = s.Context()
|
||||||
|
|
||||||
// TODO: implement storing the instance metadata
|
metadata, err := i.federationService.DiscoverInstance(ctx, host)
|
||||||
//i.federationService.
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
logoURL, logoType := preferredImage(metadata.Logo)
|
||||||
|
bannerURL, bannerType := preferredImage(metadata.Banner)
|
||||||
|
|
||||||
|
meta, err := i.db.InstanceMetadata.Create().
|
||||||
|
SetName(metadata.Name).
|
||||||
|
SetNillableDescription(metadata.Description).
|
||||||
|
SetHost(metadata.Host).
|
||||||
|
SetPublicKey(metadata.PublicKey.Key.ToKey().([]byte)).
|
||||||
|
SetPublicKeyAlgorithm(metadata.PublicKey.Key.Algorithm).
|
||||||
|
SetSoftwareName(metadata.Software.Name).
|
||||||
|
SetSoftwareVersion(metadata.Software.Version).
|
||||||
|
SetNillableSharedInboxURI(urlToStrPtr(metadata.SharedInbox)).
|
||||||
|
SetNillableModeratorsURI(urlToStrPtr(metadata.Moderators)).
|
||||||
|
SetNillableAdminsURI(urlToStrPtr(metadata.Admins)).
|
||||||
|
SetNillableLogoEndpoint(logoURL).
|
||||||
|
SetNillableLogoMimeType(logoType).
|
||||||
|
SetNillableBannerEndpoint(bannerURL).
|
||||||
|
SetNillableBannerMimeType(bannerType).
|
||||||
|
SetSupportedVersions(metadata.Compatibility.Versions).
|
||||||
|
SetSupportedExtensions(metadata.Compatibility.Extensions).
|
||||||
|
Save(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return entity.NewInstanceMetadata(meta)
|
||||||
|
}
|
||||||
|
|
||||||
|
func urlToStrPtr(u *versiautils.URL) *string {
|
||||||
|
if u == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
v := u.String()
|
||||||
|
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
var preferredImageMIMETypes = []string{
|
||||||
|
mimetype.ImageWebp,
|
||||||
|
mimetype.ImageJxl,
|
||||||
|
mimetype.ImagePng,
|
||||||
|
mimetype.ImageJpeg,
|
||||||
|
mimetype.ImageGif,
|
||||||
|
mimetype.ImageBmp,
|
||||||
|
}
|
||||||
|
|
||||||
|
func preferredImage(i *versiautils.ImageContentMap) (*string, *string) {
|
||||||
|
if i == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := i.Map()
|
||||||
|
|
||||||
|
for _, type_ := range preferredImageMIMETypes {
|
||||||
|
if v, ok := m[type_]; !ok {
|
||||||
|
return urlToStrPtr(v.Content), &type_
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,8 @@ type NoteRepository interface {
|
||||||
|
|
||||||
type InstanceMetadataRepository interface {
|
type InstanceMetadataRepository interface {
|
||||||
GetByHost(ctx context.Context, host string) (*entity.InstanceMetadata, error)
|
GetByHost(ctx context.Context, host string) (*entity.InstanceMetadata, error)
|
||||||
ImportFromVersiaByURI(ctx context.Context, uri *versiautils.URL) (*entity.InstanceMetadata, error)
|
|
||||||
|
Resolve(ctx context.Context, host string) (*entity.InstanceMetadata, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Manager interface {
|
type Manager interface {
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,10 @@ func (i ImageContentMap) String() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i ImageContentMap) Map() map[string]File {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
type NoteAttachmentContentMap ContentMap[File]
|
type NoteAttachmentContentMap ContentMap[File]
|
||||||
|
|
||||||
var ErrContentMapEntryNotRemote = errors.New("content map entry not remote")
|
var ErrContentMapEntryNotRemote = errors.New("content map entry not remote")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue