diff options
Diffstat (limited to 'internal/api/interfaces.go')
| -rw-r--r-- | internal/api/interfaces.go | 45 |
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) +) |
