chore: initial commit of TaskTracker project
Existing ASP.NET API with vanilla JS SPA, WindowWatcher, Chrome extension, and MCP server. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using TaskTracker.Core.Entities;
|
||||
using TaskTracker.Core.Interfaces;
|
||||
using TaskTracker.Infrastructure.Data;
|
||||
|
||||
namespace TaskTracker.Infrastructure.Repositories;
|
||||
|
||||
public class AppMappingRepository(TaskTrackerDbContext db) : IAppMappingRepository
|
||||
{
|
||||
public async Task<List<AppMapping>> GetAllAsync()
|
||||
{
|
||||
return await db.AppMappings.OrderBy(m => m.Category).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<AppMapping?> GetByIdAsync(int id)
|
||||
{
|
||||
return await db.AppMappings.FindAsync(id);
|
||||
}
|
||||
|
||||
public async Task<AppMapping> CreateAsync(AppMapping mapping)
|
||||
{
|
||||
db.AppMappings.Add(mapping);
|
||||
await db.SaveChangesAsync();
|
||||
return mapping;
|
||||
}
|
||||
|
||||
public async Task UpdateAsync(AppMapping mapping)
|
||||
{
|
||||
db.AppMappings.Update(mapping);
|
||||
await db.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(int id)
|
||||
{
|
||||
var mapping = await db.AppMappings.FindAsync(id);
|
||||
if (mapping is not null)
|
||||
{
|
||||
db.AppMappings.Remove(mapping);
|
||||
await db.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<AppMapping?> FindMatchAsync(string appName, string windowTitle, string? url)
|
||||
{
|
||||
var mappings = await db.AppMappings.ToListAsync();
|
||||
|
||||
return mappings.FirstOrDefault(m => m.MatchType switch
|
||||
{
|
||||
"ProcessName" => appName.Contains(m.Pattern, StringComparison.OrdinalIgnoreCase),
|
||||
"TitleContains" => windowTitle.Contains(m.Pattern, StringComparison.OrdinalIgnoreCase),
|
||||
"UrlContains" => url?.Contains(m.Pattern, StringComparison.OrdinalIgnoreCase) == true,
|
||||
_ => false
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user