Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7893331
announcement_read_relationship.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
announcement_read_relationship.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.AnnouncementReadRelationship
do
use
Ecto.Schema
import
Ecto.Changeset
alias
FlakeId.Ecto.CompatType
alias
Pleroma.Announcement
alias
Pleroma.Repo
alias
Pleroma.User
@type
t
::
%
__MODULE__
{}
schema
"announcement_read_relationships"
do
belongs_to
(
:user
,
User
,
type
:
CompatType
)
belongs_to
(
:announcement
,
Announcement
,
type
:
CompatType
)
timestamps
(
updated_at
:
false
)
end
def
mark_read
(
user
,
announcement
)
do
%
__MODULE__
{}
|>
cast
(%{
user_id
:
user
.
id
,
announcement_id
:
announcement
.
id
},
[
:user_id
,
:announcement_id
])
|>
validate_required
([
:user_id
,
:announcement_id
])
|>
foreign_key_constraint
(
:user_id
)
|>
foreign_key_constraint
(
:announcement_id
)
|>
unique_constraint
([
:user_id
,
:announcement_id
])
|>
Repo
.
insert
()
end
def
mark_unread
(
user
,
announcement
)
do
with
relationship
<-
get
(
user
,
announcement
),
{
:exists
,
true
}
<-
{
:exists
,
not
is_nil
(
relationship
)},
{
:ok
,
_
}
<-
Repo
.
delete
(
relationship
)
do
:ok
else
{
:exists
,
false
}
->
:ok
_
->
:error
end
end
def
get
(
user
,
announcement
)
do
Repo
.
get_by
(
__MODULE__
,
user_id
:
user
.
id
,
announcement_id
:
announcement
.
id
)
end
def
exists?
(
user
,
announcement
)
do
not
is_nil
(
get
(
user
,
announcement
))
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Thu, Oct 2, 4:56 AM (10 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
480673
Default Alt Text
announcement_read_relationship.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment