summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/contracts.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-15 03:37:44 +0000
committerGitHub <noreply@github.com>2026-01-15 03:37:44 +0000
commit764bd28d08ceaef03cd4050f9568a62d77bbcfca (patch)
treedbd83ea7d213902f2b8021acc98798b6f3545946 /makima/src/server/handlers/contracts.rs
parenteeafe072bc6bb81459f7d087b48fc921afe9cc11 (diff)
downloadsoryu-764bd28d08ceaef03cd4050f9568a62d77bbcfca.tar.gz
soryu-764bd28d08ceaef03cd4050f9568a62d77bbcfca.zip
Add repository history feature to store and suggest previously used repositories (#18)
- Add repository_history table migration with repo_type, repo_path, use_count, last_used_at - Add RepositoryHistoryEntry model and CRUD database functions - Create API endpoints: GET/POST/DELETE /api/v1/repository-history, GET /api/v1/repository-history/suggestions - Update add_remote_repository and add_local_repository handlers to automatically track history - Update frontend API with repository history types and functions - Add Repository History section to Settings page with list of entries and delete functionality - Add suggestions dropdown to RepositoryPanel when entering new repository URL/path - Suggestions filter by repo type (remote vs local) and match on user input Test plan: - Add a remote repository to a contract - verify it appears in Settings history - Add a local repository to a contract - verify it appears in Settings history - Add same repository again - verify use_count increments, not duplicate - When adding new repository, verify suggestions appear based on history - Delete a history entry from Settings - verify it's removed - Verify suggestions only show matching type (remote for remote, local for local) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'makima/src/server/handlers/contracts.rs')
-rw-r--r--makima/src/server/handlers/contracts.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/makima/src/server/handlers/contracts.rs b/makima/src/server/handlers/contracts.rs
index a3aa00a..3ce29e1 100644
--- a/makima/src/server/handlers/contracts.rs
+++ b/makima/src/server/handlers/contracts.rs
@@ -631,6 +631,22 @@ pub async fn add_remote_repository(
Ok(repo) => {
// Update supervisor task with repository info if this is a primary repo
update_supervisor_with_repo_if_needed(pool, id, auth.owner_id, &repo).await;
+
+ // Track repository in history for future suggestions
+ if let Err(e) = repository::add_or_update_repository_history(
+ pool,
+ auth.owner_id,
+ &req.name,
+ Some(&req.repository_url),
+ None,
+ "remote",
+ )
+ .await
+ {
+ // Log but don't fail the request if history tracking fails
+ tracing::warn!("Failed to track repository in history: {}", e);
+ }
+
(StatusCode::CREATED, Json(repo)).into_response()
}
Err(e) => {
@@ -705,6 +721,22 @@ pub async fn add_local_repository(
Ok(repo) => {
// Update supervisor task with repository info if this is a primary repo
update_supervisor_with_repo_if_needed(pool, id, auth.owner_id, &repo).await;
+
+ // Track repository in history for future suggestions
+ if let Err(e) = repository::add_or_update_repository_history(
+ pool,
+ auth.owner_id,
+ &req.name,
+ None,
+ Some(&req.local_path),
+ "local",
+ )
+ .await
+ {
+ // Log but don't fail the request if history tracking fails
+ tracing::warn!("Failed to track repository in history: {}", e);
+ }
+
(StatusCode::CREATED, Json(repo)).into_response()
}
Err(e) => {