add iri column

This commit is contained in:
anna 2022-12-25 15:57:33 +01:00
parent 93182705d9
commit 4f542571e0
Signed by: fef
GPG key ID: EC22E476DC2D3D84
11 changed files with 35 additions and 18 deletions

View file

@ -1,5 +1,6 @@
CREATE TABLE accounts (
id BIGSERIAL PRIMARY KEY,
iri VARCHAR,
name VARCHAR NOT NULL,
domain VARCHAR NOT NULL,
display_name VARCHAR DEFAULT NULL,
@ -7,4 +8,5 @@ CREATE TABLE accounts (
updated_at TIMESTAMP NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX index_accounts_on_iri ON accounts (iri);
CREATE UNIQUE INDEX index_accounts_on_name_and_domain ON accounts (name, domain);

View file

@ -1,7 +1,7 @@
CREATE TABLE notes (
id BIGSERIAL PRIMARY KEY,
account_id BIGINT REFERENCES accounts (id),
uri VARCHAR,
iri VARCHAR,
content TEXT NOT NULL,
source TEXT DEFAULT NULL,
summary TEXT DEFAULT NULL,
@ -11,5 +11,5 @@ CREATE TABLE notes (
);
CREATE INDEX index_notes_on_account_id ON notes (account_id);
CREATE UNIQUE INDEX index_notes_on_uri ON notes (uri);
CREATE UNIQUE INDEX index_notes_on_iri ON notes (iri);
CREATE INDEX index_notes_on_created_at ON notes (created_at);

View file

@ -1,9 +1,10 @@
CREATE TABLE follows (
id BIGSERIAL PRIMARY KEY,
iri VARCHAR,
follower_id BIGINT REFERENCES accounts (id) ON DELETE CASCADE,
followee_id BIGINT REFERENCES accounts (id) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT now()
created_at TIMESTAMP NOT NULL DEFAULT now()
);
CREATE INDEX index_follows_on_follower_id ON follows (follower_id);
CREATE INDEX index_follows_on_followee_id ON follows (followee_id);
CREATE UNIQUE INDEX index_follows_on_iri ON follows(iri);
CREATE UNIQUE INDEX index_follows_on_follower_id_and_followee_id ON follows (follower_id, followee_id);

View file

@ -1,10 +1,10 @@
CREATE TABLE likes (
id BIGSERIAL PRIMARY KEY,
iri VARCHAR,
note_id BIGINT REFERENCES notes (id) ON DELETE CASCADE,
account_id BIGINT REFERENCES accounts (id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT now()
);
CREATE INDEX index_likes_on_note_id ON likes (note_id);
CREATE INDEX index_likes_on_account_id ON likes (account_id);
CREATE UNIQUE INDEX index_likes_on_iri ON likes (iri);
CREATE UNIQUE INDEX index_likes_on_note_id_and_account_id ON likes (note_id, account_id);

View file

@ -30,10 +30,11 @@ impl PgAccountDataSource {
{
let new = new.into();
let account: Account = sqlx::query_as(
"INSERT INTO accounts (name, domain, display_name)
VALUES ($1, $2, $3)
"INSERT INTO accounts (iri, name, domain, display_name)
VALUES ($1, $2, $3, $4)
RETURNING *",
)
.bind(new.iri)
.bind(new.name)
.bind(new.domain)
.bind(new.display_name)

View file

@ -29,8 +29,11 @@ impl PgFollowDataSource {
{
let new = new.into();
let follow: Follow = sqlx::query_as(
"INSERT INTO follows (follower_id, followee_id) VALUES ($1, $2) RETURNING *",
"INSERT INTO follows (iri, follower_id, followee_id)
VALUES ($1, $2, $3)
RETURNING *",
)
.bind(new.iri)
.bind(new.follower_id)
.bind(new.followee_id)
.fetch_one(&self.pool)

View file

@ -30,8 +30,12 @@ impl PgLikeDataSource {
E: Into<Error>,
{
let new = new.try_into().map_err(|e| e.into())?.inner();
let like: Like =
sqlx::query_as("INSERT INTO likes (note_id, account_id) VALUES ($1, $2) RETURNING *")
let like: Like = sqlx::query_as(
"INSERT INTO likes (iri, note_id, account_id)
VALUES ($1, $2, $3)
RETURNING *",
)
.bind(new.iri)
.bind(new.note_id)
.bind(new.account_id)
.fetch_one(&self.pool)

View file

@ -51,7 +51,7 @@ impl PgNoteDataSource {
let note: Note = sqlx::query_as(
"INSERT INTO notes (
account_id,
uri,
iri,
content,
source,
summary,
@ -60,7 +60,7 @@ impl PgNoteDataSource {
RETURNING *",
)
.bind(new.account_id)
.bind(new.uri)
.bind(new.iri)
.bind(new.content)
.bind(new.source)
.bind(new.summary)

View file

@ -8,6 +8,7 @@ use crate::util::validate::{ResultBuilder, Validate};
#[derive(Deserialize, Serialize, FromRow)]
pub struct Account {
pub id: Id,
pub iri: Option<String>,
pub name: String,
pub domain: String,
pub display_name: Option<String>,
@ -16,6 +17,7 @@ pub struct Account {
}
pub struct NewAccount {
pub iri: Option<String>,
pub name: String,
pub domain: String,
pub display_name: Option<String>,

View file

@ -8,12 +8,14 @@ use crate::util::validate::{ResultBuilder, Validate};
#[derive(Deserialize, Serialize, FromRow)]
pub struct Follow {
pub id: Id,
pub iri: Option<String>,
pub follower_id: Id,
pub followee_id: Id,
pub created_at: NaiveDateTime,
}
pub struct NewFollow {
pub iri: Option<String>,
pub follower_id: Id,
pub followee_id: Id,
}

View file

@ -8,12 +8,14 @@ use crate::util::validate::{ResultBuilder, Validate};
#[derive(Deserialize, Serialize, FromRow)]
pub struct Like {
pub id: Id,
pub iri: Option<String>,
pub note_id: Id,
pub account_id: Id,
pub created_at: NaiveDateTime,
}
pub struct NewLike {
pub iri: Option<String>,
pub note_id: Id,
pub account_id: Id,
}