blob: 39541fa09e64e3ffebded92c4bbb54e1d092dcbd [file] [log] [blame]
package git_tm
import (
"context"
"fmt"
"log"
"time"
"github.com/iomodo/staff/git"
"github.com/iomodo/staff/tm"
)
// Example demonstrates how to use the GitTaskManager
func Example() {
// Initialize git interface
gitInterface := git.DefaultGit("./tasks-repo")
// Create task manager
taskManager := NewGitTaskManager(gitInterface, "./tasks-repo")
// Create a new task
ctx := context.Background()
dueDate := time.Now().AddDate(0, 0, 7) // Due in 7 days
createReq := &tm.TaskCreateRequest{
Title: "Implement user authentication",
Description: "Add login/logout functionality with JWT tokens",
OwnerID: "john.doe",
Priority: tm.PriorityHigh,
DueDate: &dueDate,
}
task, err := taskManager.CreateTask(ctx, createReq)
if err != nil {
log.Fatalf("Failed to create task: %v", err)
}
fmt.Printf("Created task: %s\n", task.ID)
// Get the task
retrievedTask, err := taskManager.GetTask(ctx, task.ID)
if err != nil {
log.Fatalf("Failed to get task: %v", err)
}
fmt.Printf("Retrieved task: %s - %s\n", retrievedTask.ID, retrievedTask.Title)
// Start the task
startedTask, err := taskManager.StartTask(ctx, task.ID)
if err != nil {
log.Fatalf("Failed to start task: %v", err)
}
fmt.Printf("Started task: %s (status: %s)\n", startedTask.ID, startedTask.Status)
// List all tasks
taskList, err := taskManager.ListTasks(ctx, nil, 0, 10)
if err != nil {
log.Fatalf("Failed to list tasks: %v", err)
}
fmt.Printf("Total tasks: %d\n", taskList.TotalCount)
for _, t := range taskList.Tasks {
fmt.Printf("- %s: %s (%s)\n", t.ID, t.Title, t.Status)
}
// Complete the task
completedTask, err := taskManager.CompleteTask(ctx, task.ID)
if err != nil {
log.Fatalf("Failed to complete task: %v", err)
}
fmt.Printf("Completed task: %s (completed at: %s)\n",
completedTask.ID, completedTask.CompletedAt.Format(time.RFC3339))
}
// ExampleTaskFile shows the format of a task file
func ExampleTaskFile() {
fmt.Print(`Example task file (tasks/task-1704067200-abc123.md):
---
id: task-1704067200-abc123
title: Implement user authentication
description: Add login/logout functionality with JWT tokens
owner_id: john.doe
owner_name: John Doe
status: in_progress
priority: high
created_at: 2024-01-01T10:00:00Z
updated_at: 2024-01-01T15:30:00Z
due_date: 2024-01-08T17:00:00Z
completed_at: null
archived_at: null
---
# Task Description
Add login/logout functionality with JWT tokens for the web application.
## Requirements
- User registration and login forms
- JWT token generation and validation
- Password hashing with bcrypt
- Session management
- Logout functionality
## Notes
- Consider using bcrypt for password hashing
- Implement refresh token mechanism
- Add rate limiting for login attempts
`)
}