5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-24 15:56:20 +00:00
panel/app/models/activity_pub/activity.rb

35 lines
1.1 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# = Activity =
#
# Lleva un registro de las actividades que nos piden hacer remotamente.
#
# Las actividades pueden tener distintos destinataries (sitios/actores).
#
# @todo Obtener el contenido del objeto dinámicamente si no existe
# localmente, por ejemplo cuando la actividad crea un objeto pero lo
# envía como referencia en lugar de anidarlo.
#
# @see {https://www.w3.org/TR/activitypub/#client-to-server-interactions}
2024-02-21 15:46:38 +00:00
class ActivityPub
class Activity < ApplicationRecord
include ActivityPub::Concerns::JsonLdConcern
2024-02-21 15:46:38 +00:00
belongs_to :activity_pub
belongs_to :actor, touch: true
2024-02-21 15:46:38 +00:00
has_one :object, through: :activity_pub
2024-02-21 15:46:38 +00:00
validates :activity_pub_id, presence: true
# Las actividades son únicas con respecto a su estado
2024-03-06 20:45:21 +00:00
validates :uri, presence: true, url: true, uniqueness: { scope: :activity_pub_id, message: 'estado duplicado' }
2024-02-21 15:46:38 +00:00
# Siempre en orden descendiente para saber el último estado
default_scope -> { order(created_at: :desc) }
2024-02-20 20:15:43 +00:00
2024-02-21 15:46:38 +00:00
# Cambia la máquina de estados según el tipo de actividad
def update_activity_pub_state!
nil
end
2024-02-20 20:15:43 +00:00
end
end