Custom apps developer APIs

This commit is contained in:
2025-06-28 19:20:36 +08:00
parent 8251a9ec7d
commit 933d762f24
3 changed files with 130 additions and 3 deletions

View File

@ -0,0 +1,73 @@
using DysonNetwork.Sphere.Publisher;
using Microsoft.EntityFrameworkCore;
namespace DysonNetwork.Sphere.Developer;
public class CustomAppService(AppDatabase db, PublisherService ps)
{
public async Task<CustomApp?> CreateAppAsync(Guid publisherId, string name, string slug)
{
var publisher = await db.Publishers.FirstOrDefaultAsync(p => p.Id == publisherId);
if (publisher == null)
{
return null;
}
if (!await ps.HasFeature(publisherId, "developer"))
{
return null;
}
var app = new CustomApp
{
Name = name,
Slug = slug,
PublisherId = publisher.Id
};
db.CustomApps.Add(app);
await db.SaveChangesAsync();
return app;
}
public async Task<CustomApp?> GetAppAsync(Guid id)
{
return await db.CustomApps.FindAsync(id);
}
public async Task<List<CustomApp>> GetAppsByPublisherAsync(Guid publisherId)
{
return await db.CustomApps.Where(a => a.PublisherId == publisherId).ToListAsync();
}
public async Task<CustomApp?> UpdateAppAsync(Guid id, string name, string slug)
{
var app = await db.CustomApps.FindAsync(id);
if (app == null)
{
return null;
}
app.Name = name;
app.Slug = slug;
await db.SaveChangesAsync();
return app;
}
public async Task<bool> DeleteAppAsync(Guid id)
{
var app = await db.CustomApps.FindAsync(id);
if (app == null)
{
return false;
}
db.CustomApps.Remove(app);
await db.SaveChangesAsync();
return true;
}
}