diff --git a/packages/backend/native-utils/tests/common.rs b/packages/backend/native-utils/tests/common.rs index 674297606f..86910bb3da 100644 --- a/packages/backend/native-utils/tests/common.rs +++ b/packages/backend/native-utils/tests/common.rs @@ -44,7 +44,6 @@ async fn setup_schema(db: &DbConn) { ad, announcement_read, announcement, - antenna_note, antenna, app, attestation_challenge, diff --git a/packages/backend/native-utils/tests/model/repository/antenna.rs b/packages/backend/native-utils/tests/model/repository/antenna.rs index 9b03d3652d..e5eaaa7bfc 100644 --- a/packages/backend/native-utils/tests/model/repository/antenna.rs +++ b/packages/backend/native-utils/tests/model/repository/antenna.rs @@ -1,13 +1,13 @@ mod int_test { - use native_utils::{database, model, util}; + use native_utils::{database, model}; use model::{ - entity::{antenna, antenna_note, note, user}, + entity::{antenna, user}, repository::Repository, schema, }; use pretty_assertions::assert_eq; - use sea_orm::{ActiveModelTrait, ColumnTrait, EntityTrait, IntoActiveModel, QueryFilter}; + use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; use crate::{cleanup, prepare}; @@ -71,7 +71,7 @@ mod int_test { prepare().await; let db = database::get_database().unwrap(); - let (alice, alice_antenna) = user::Entity::find() + let (_, alice_antenna) = user::Entity::find() .filter(user::Column::Username.eq("alice")) .find_also_related(antenna::Entity) .one(db) @@ -86,24 +86,6 @@ mod int_test { .expect("Unable to pack"); assert_eq!(packed.has_unread_note, false); - let note_model = note::Entity::find() - .filter(note::Column::UserId.eq(alice.id)) - .one(db) - .await - .unwrap() - .expect("note not found"); - let antenna_note = antenna_note::Model { - id: util::id::create_id(0).unwrap(), - antenna_id: alice_antenna.id.to_owned(), - note_id: note_model.id.to_owned(), - read: false, - }; - antenna_note - .into_active_model() - .reset_all() - .insert(db) - .await - .unwrap(); let packed = alice_antenna .to_owned() .pack() diff --git a/packages/backend/src/db/cql.ts b/packages/backend/src/db/cql.ts index 6d2f73189e..588bcaa4e3 100644 --- a/packages/backend/src/db/cql.ts +++ b/packages/backend/src/db/cql.ts @@ -53,6 +53,9 @@ export const scyllaQueries = { byReplyId: `SELECT * FROM note WHERE "replyId" = ?`, byChannelId: `SELECT * FROM note_by_channel_id WHERE "channelId" = ?`, }, + count: { + byUserId: `SELECT COUNT(*) FROM note_by_user_id WHERE "userId" = ?`, + }, delete: `DELETE FROM note WHERE "createdAtDate" = ? AND "createdAt" = ? AND "userId" = ? AND "userHost" = ? AND "visibility" = ?`, update: { renoteCount: `UPDATE note SET diff --git a/packages/backend/src/server/api/endpoints/users/stats.ts b/packages/backend/src/server/api/endpoints/users/stats.ts index 83e821f498..5ade505fe3 100644 --- a/packages/backend/src/server/api/endpoints/users/stats.ts +++ b/packages/backend/src/server/api/endpoints/users/stats.ts @@ -11,6 +11,7 @@ import { import { awaitAll } from "@/prelude/await-all.js"; import define from "../../define.js"; import { ApiError } from "../../error.js"; +import { scyllaClient } from "@/db/scylla.js"; export const meta = { tags: ["users"], @@ -147,6 +148,32 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, me) => { + // FIXME: do we really need this chart? + if (scyllaClient) { + return { + notesCount: 0, + repliesCount: 0, + renotesCount: 0, + repliedCount: 0, + renotedCount: 0, + pollVotesCount: 0, + pollVotedCount: 0, + localFollowingCount: 0, + remoteFollowingCount: 0, + localFollowersCount: 0, + remoteFollowersCount: 0, + sentReactionsCount: 0, + receivedReactionsCount: 0, + noteFavoritesCount: 0, + pageLikesCount: 0, + pageLikedCount: 0, + driveFilesCount: 0, + driveUsage: 0, + followingCount: 0, + followersCount: 0, + }; + } + const user = await Users.findOneBy({ id: ps.userId }); if (user == null) { throw new ApiError(meta.errors.noSuchUser);