summaryrefslogtreecommitdiff
path: root/internal/api/interfaces.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/interfaces.go')
-rw-r--r--internal/api/interfaces.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/internal/api/interfaces.go b/internal/api/interfaces.go
new file mode 100644
index 0000000..95cc0e7
--- /dev/null
+++ b/internal/api/interfaces.go
@@ -0,0 +1,45 @@
+package api
+
+import (
+ "context"
+ "time"
+
+ "task-dashboard/internal/models"
+)
+
+// TodoistAPI defines the interface for Todoist operations
+type TodoistAPI interface {
+ GetTasks(ctx context.Context) ([]models.Task, error)
+ GetProjects(ctx context.Context) (map[string]string, error)
+ CreateTask(ctx context.Context, content, projectID string, dueDate *time.Time, priority int) (*models.Task, error)
+ CompleteTask(ctx context.Context, taskID string) error
+}
+
+// TrelloAPI defines the interface for Trello operations
+type TrelloAPI interface {
+ GetBoards(ctx context.Context) ([]models.Board, error)
+ GetCards(ctx context.Context, boardID string) ([]models.Card, error)
+ GetBoardsWithCards(ctx context.Context) ([]models.Board, error)
+ CreateCard(ctx context.Context, listID, name, description string, dueDate *time.Time) (*models.Card, error)
+ UpdateCard(ctx context.Context, cardID string, updates map[string]interface{}) error
+}
+
+// ObsidianAPI defines the interface for Obsidian operations
+type ObsidianAPI interface {
+ GetNotes(ctx context.Context, limit int) ([]models.Note, error)
+}
+
+// PlanToEatAPI defines the interface for PlanToEat operations
+type PlanToEatAPI interface {
+ GetUpcomingMeals(ctx context.Context, days int) ([]models.Meal, error)
+ GetRecipes(ctx context.Context) error
+ AddMealToPlanner(ctx context.Context, recipeID string, date time.Time, mealType string) error
+}
+
+// Ensure concrete types implement interfaces
+var (
+ _ TodoistAPI = (*TodoistClient)(nil)
+ _ TrelloAPI = (*TrelloClient)(nil)
+ _ ObsidianAPI = (*ObsidianClient)(nil)
+ _ PlanToEatAPI = (*PlanToEatClient)(nil)
+)