♻️ Finish centerlizing the data models

This commit is contained in:
2025-09-27 15:14:05 +08:00
parent e70d8371f8
commit 9ce31c4dd8
167 changed files with 780 additions and 42880 deletions

View File

@@ -1,3 +1,4 @@
using DysonNetwork.Shared.Models;
using DysonNetwork.Shared.Proto;
using Microsoft.AspNetCore.Mvc;
using NodaTime;
@@ -23,7 +24,7 @@ public class ActivityController(
/// Besides, when users are logged in, it will also mix the other kinds of data and who're plying to them.
/// </summary>
[HttpGet]
public async Task<ActionResult<List<Activity>>> ListActivities(
public async Task<ActionResult<List<SnActivity>>> ListActivities(
[FromQuery] string? cursor,
[FromQuery] string? filter,
[FromQuery] int take = 20,

View File

@@ -31,12 +31,12 @@ public class ActivityService(
return performanceWeight / Math.Pow(normalizedTime + 1.0, 1.2);
}
public async Task<List<Activity>> GetActivitiesForAnyone(
public async Task<List<SnActivity>> GetActivitiesForAnyone(
int take,
Instant? cursor,
HashSet<string>? debugInclude = null)
{
var activities = new List<Activity>();
var activities = new List<SnActivity>();
debugInclude ??= new HashSet<string>();
// Get and process posts
@@ -55,7 +55,7 @@ public class ActivityService(
var posts = await GetAndProcessPosts(postsQuery);
posts = RankPosts(posts, take);
var interleaved = new List<Activity>();
var interleaved = new List<SnActivity>();
var random = new Random();
foreach (var post in posts)
{
@@ -73,19 +73,19 @@ public class ActivityService(
activities.AddRange(interleaved);
if (activities.Count == 0)
activities.Add(Activity.Empty());
activities.Add(SnActivity.Empty());
return activities;
}
public async Task<List<Activity>> GetActivities(
public async Task<List<SnActivity>> GetActivities(
int take,
Instant? cursor,
Account currentUser,
string? filter = null,
HashSet<string>? debugInclude = null)
{
var activities = new List<Activity>();
var activities = new List<SnActivity>();
debugInclude ??= new HashSet<string>();
// Get user's friends and publishers
@@ -124,7 +124,7 @@ public class ActivityService(
posts = RankPosts(posts, take);
var interleaved = new List<Activity>();
var interleaved = new List<SnActivity>();
var random = new Random();
foreach (var post in posts)
{
@@ -141,15 +141,15 @@ public class ActivityService(
activities.AddRange(interleaved);
if (activities.Count == 0)
activities.Add(Activity.Empty());
activities.Add(SnActivity.Empty());
return activities;
}
private async Task<Activity?> MaybeGetDiscoveryActivity(HashSet<string> debugInclude, Instant? cursor)
private async Task<SnActivity?> MaybeGetDiscoveryActivity(HashSet<string> debugInclude, Instant? cursor)
{
if (cursor != null) return null;
var options = new List<Func<Task<Activity?>>>();
var options = new List<Func<Task<SnActivity?>>>();
if (debugInclude.Contains("realms") || Random.Shared.NextDouble() < 0.2)
options.Add(() => GetRealmDiscoveryActivity());
if (debugInclude.Contains("publishers") || Random.Shared.NextDouble() < 0.2)
@@ -200,7 +200,7 @@ public class ActivityService(
.ToList();
}
private async Task<Activity?> GetRealmDiscoveryActivity(int count = 5)
private async Task<SnActivity?> GetRealmDiscoveryActivity(int count = 5)
{
var realms = await ds.GetCommunityRealmAsync(null, count, 0, true);
return realms.Count > 0
@@ -208,7 +208,7 @@ public class ActivityService(
: null;
}
private async Task<Activity?> GetPublisherDiscoveryActivity(int count = 5)
private async Task<SnActivity?> GetPublisherDiscoveryActivity(int count = 5)
{
var popularPublishers = await GetPopularPublishers(count);
return popularPublishers.Count > 0
@@ -217,7 +217,7 @@ public class ActivityService(
: null;
}
private async Task<Activity?> GetShuffledPostsActivity(int count = 5)
private async Task<SnActivity?> GetShuffledPostsActivity(int count = 5)
{
var postsQuery = db.Posts
.Include(p => p.Categories)
@@ -234,7 +234,7 @@ public class ActivityService(
: new DiscoveryActivity(posts.Select(x => new DiscoveryItem("post", x)).ToList()).ToActivity();
}
private async Task<Activity?> GetArticleDiscoveryActivity(int count = 5, int feedSampleSize = 10)
private async Task<SnActivity?> GetArticleDiscoveryActivity(int count = 5, int feedSampleSize = 10)
{
var now = SystemClock.Instance.GetCurrentInstant();
var today = now.InZone(DateTimeZone.Utc).Date;

View File

@@ -1,5 +1,3 @@
using System;
using System.Collections.Generic;
using DysonNetwork.Shared.Models;
using NodaTime;
@@ -9,10 +7,10 @@ public class DiscoveryActivity(List<DiscoveryItem> items) : IActivity
{
public List<DiscoveryItem> Items { get; set; } = items;
public Activity ToActivity()
public SnActivity ToActivity()
{
var now = SystemClock.Instance.GetCurrentInstant();
return new Activity
return new SnActivity
{
Id = Guid.NewGuid(),
Type = "discovery",