diff --git a/Cargo.toml b/Cargo.toml index dc08816c..05992856 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,6 +76,7 @@ debug-mailer = [] test = [] search-lindera = ["plume-models/search-lindera"] s3 = ["plume-models/s3"] +cargo-clippy = [] [workspace] members = ["plume-api", "plume-cli", "plume-models", "plume-common", "plume-front", "plume-macro"] diff --git a/Containerfile b/Containerfile new file mode 100644 index 00000000..de817c3b --- /dev/null +++ b/Containerfile @@ -0,0 +1,57 @@ +FROM rust:1.82 AS builder + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + gettext \ + postgresql-client \ + libpq-dev \ + git \ + curl \ + gcc \ + make \ + openssl \ + libssl-dev \ + clang + +RUN ln -s /usr/bin/python3 /usr/bin/python & \ + ln -s /usr/bin/pip3 /usr/bin/pip + +WORKDIR /scratch +COPY script/wasm-deps.sh . +RUN chmod a+x ./wasm-deps.sh && sleep 1 && ./wasm-deps.sh + +WORKDIR /app + +COPY . . +RUN echo "=== TOOLCHAIN ===" && \ + rustc --version && \ + cargo --version && \ + rustup show && \ + echo "=== TIME-CORE IN LOCK ===" && \ + grep -A5 -B2 'name = "time-core"' Cargo.lock + +#RUN cargo install wasm-pack +RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh +RUN chmod a+x ./script/plume-front.sh && sleep 1 && ./script/plume-front.sh + +RUN cargo install --locked --path ./ --force --no-default-features --features postgres +RUN cargo install --locked --path plume-cli --force --no-default-features --features postgres +#RUN cargo install --path ./ --force --no-default-features --features postgres +#RUN cargo install --path plume-cli --force --no-default-features --features postgres +RUN cargo clean + +FROM debian:stable-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + libpq5 + +WORKDIR /app + +COPY --from=builder /app /app +COPY --from=builder /usr/local/cargo/bin/plm /bin/ +COPY --from=builder /usr/local/cargo/bin/plume /bin/ + +CMD ["plume"] + +EXPOSE 7878 diff --git a/plume-models/src/apps.rs b/plume-models/src/apps.rs index bf68777d..96c50cb0 100644 --- a/plume-models/src/apps.rs +++ b/plume-models/src/apps.rs @@ -1,6 +1,7 @@ use crate::{schema::apps, Error, Result}; use chrono::NaiveDateTime; use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl}; +use serde_derive::Serialize; #[derive(Clone, Queryable, Serialize)] pub struct App { diff --git a/plume-models/src/comments.rs b/plume-models/src/comments.rs index 410f5157..7215e240 100644 --- a/plume-models/src/comments.rs +++ b/plume-models/src/comments.rs @@ -136,7 +136,8 @@ impl Comment { |id| Comment::get(conn, id).map(|comment| comment.ap_url.unwrap_or_default()), )?); note.set_published( - OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.timestamp_nanos_opt().unwrap().into()) + //EZABATU OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.timestamp_nanos_opt().unwrap().into()) + OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.and_utc().timestamp_nanos_opt().unwrap().into()) .expect("OffsetDateTime"), ); note.set_attributed_to(author.into_id().parse::()?); diff --git a/plume-models/src/config.rs b/plume-models/src/config.rs index a352f0f7..20c969be 100644 --- a/plume-models/src/config.rs +++ b/plume-models/src/config.rs @@ -5,6 +5,7 @@ use rocket::config::Limits; use rocket::Config as RocketConfig; use std::collections::HashSet; use std::env::{self, var}; +use serde_derive::Serialize; #[cfg(feature = "s3")] use s3::{Bucket, Region, creds::Credentials}; diff --git a/plume-models/src/posts.rs b/plume-models/src/posts.rs index acc9c216..628b0b96 100644 --- a/plume-models/src/posts.rs +++ b/plume-models/src/posts.rs @@ -12,7 +12,7 @@ use activitystreams::{ prelude::*, time::OffsetDateTime, }; -use chrono::{NaiveDateTime, Utc}; +use chrono::{DateTime, NaiveDateTime, Utc}; use diesel::{self, BelongingToDsl, ExpressionMethods, QueryDsl, RunQueryDsl}; use once_cell::sync::Lazy; use plume_common::{ @@ -373,7 +373,8 @@ impl Post { }))?; article.set_source(source); article.set_published( - OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.timestamp_nanos_opt().unwrap().into()) + //EZABATU OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.timestamp_nanos_opt().unwrap().into()) + OffsetDateTime::from_unix_timestamp_nanos(self.creation_date.and_utc().timestamp_nanos_opt().unwrap().into()) .expect("OffsetDateTime"), ); article.set_summary(&*self.subtitle); @@ -752,6 +753,20 @@ impl FromId for Post { license, // FIXME: This is wrong: with this logic, we may use the display URL as the AP ID. We need two different fields ap_url, + creation_date: article.published().map(|published| { + let timestamp_secs = published.unix_timestamp(); + let timestamp_nanos = published.unix_timestamp_nanos() + - (timestamp_secs as i128) * 1000i128 * 1000i128 * 1000i128; + + DateTime::from_timestamp( + timestamp_secs, + timestamp_nanos as u32, + ) + .unwrap() + .naive_utc() + }), + /* + EZABATU creation_date: article.published().map(|published| { let timestamp_secs = published.unix_timestamp(); let timestamp_nanos = published.unix_timestamp_nanos() @@ -762,6 +777,7 @@ impl FromId for Post { ) .unwrap() }), + */ subtitle: article .summary() .and_then(|summary| summary.to_as_string()) diff --git a/plume-models/src/search/query.rs b/plume-models/src/search/query.rs index 5dcd605c..828852b0 100644 --- a/plume-models/src/search/query.rs +++ b/plume-models/src/search/query.rs @@ -93,7 +93,8 @@ macro_rules! gen_to_string { } )* $( - for val in &$self.$date { + //for val in &$self.$date { + if let Some(val) = &$self.$date { $result.push_str(&format!("{}:{} ", stringify!($date), NaiveDate::from_num_days_from_ce_opt(*val as i32).unwrap().format("%Y-%m-%d"))); } )* diff --git a/plume-models/src/timeline/mod.rs b/plume-models/src/timeline/mod.rs index 2a3daa1e..784e3d9a 100644 --- a/plume-models/src/timeline/mod.rs +++ b/plume-models/src/timeline/mod.rs @@ -6,7 +6,6 @@ use crate::{ }; use diesel::{self, BoolExpressionMethods, ExpressionMethods, QueryDsl, RunQueryDsl}; use std::cmp::Ordering; -use std::ops::Deref; pub(crate) mod query; diff --git a/rust-toolchain b/rust-toolchain index 168029d9..2cc08abc 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1,3 @@ -nightly-2024-08-30 +[toolchain] +#channel = "nightly-2025-08-01" +channel = "nightly-2024-08-30"