package api import ( "atlas9.dev/c/core" "atlas9.dev/c/demo/todos" ) const ( Path_Todos_CreateList = "POST /Todos_CreateList" Path_Todos_UpdateList = "POST /Todos_UpdateList" Path_Todos_GetList = "POST /Todos_GetList" Path_Todos_ListLists = "POST /Todos_ListLists" Path_Todos_DeleteList = "POST /Todos_DeleteList" Path_Todos_AddToList = "POST /Todos_AddToList" Path_Todos_RemoveFromList = "POST /Todos_RemoveFromList" Path_Todos_CreateItem = "POST /Todos_CreateItem" Path_Todos_UpdateItem = "POST /Todos_UpdateItem" Path_Todos_GetItem = "POST /Todos_GetItem" Path_Todos_ListItems = "POST /Todos_ListItems" Path_Todos_DeleteItem = "POST /Todos_DeleteItem" ) type Todos_CreateListReq struct { List todos.List } type Todos_CreateListRes struct { List todos.List } type Todos_UpdateListReq struct { List todos.List } type Todos_UpdateListRes struct { List todos.List } type Todos_GetListReq struct { ID core.ID Tenant core.ID } type Todos_GetListRes struct { List todos.List } type Todos_ListListsReq struct { Tenant core.ID Page core.PageReq } type Todos_ListListsRes struct { Page core.Page[todos.List] } type Todos_DeleteListReq struct { ID core.ID Tenant core.ID } type Todos_DeleteListRes struct{} type Todos_AddToListReq struct { Tenant core.ID List core.ID Item core.ID } type Todos_AddToListRes struct{} type Todos_RemoveFromListReq struct { Tenant core.ID List core.ID Item core.ID } type Todos_RemoveFromListRes struct{} type Todos_CreateItemReq struct { Item todos.Item } type Todos_CreateItemRes struct { Item todos.Item } type Todos_UpdateItemReq struct { Item todos.Item } type Todos_UpdateItemRes struct { Item todos.Item } type Todos_GetItemReq struct { ID core.ID Tenant core.ID } type Todos_GetItemRes struct { Item todos.Item } type Todos_ListItemsReq struct { Tenant core.ID // List filters items to a single list. Empty lists all items in the tenant. List core.ID Page core.PageReq } type Todos_ListItemsRes struct { Page core.Page[todos.Item] } type Todos_DeleteItemReq struct { ID core.ID Tenant core.ID } type Todos_DeleteItemRes struct{} // Prepare functions func (r *Todos_CreateListReq) Prepare() error { r.List.ID = core.NewID("list") if r.List.Name == "" { return &ValidationError{Errors: []string{"list name is required"}} } return nil } func (r *Todos_UpdateListReq) Prepare() error { var errs []string if r.List.ID.IsEmpty() { errs = append(errs, "list id is required") } if r.List.Name == "" { errs = append(errs, "list name is required") } if len(errs) > 0 { return &ValidationError{Errors: errs} } return nil } func (r *Todos_CreateItemReq) Prepare() error { r.Item.ID = core.NewID("todo") if r.Item.Status == "" { r.Item.Status = todos.StatusOpen } var errs []string if r.Item.Title == "" { errs = append(errs, "item title is required") } if !r.Item.Status.Valid() { errs = append(errs, "invalid status") } if len(errs) > 0 { return &ValidationError{Errors: errs} } return nil } func (r *Todos_UpdateItemReq) Prepare() error { var errs []string if r.Item.ID.IsEmpty() { errs = append(errs, "item id is required") } if r.Item.Title == "" { errs = append(errs, "item title is required") } if !r.Item.Status.Valid() { errs = append(errs, "invalid status") } if len(errs) > 0 { return &ValidationError{Errors: errs} } return nil } func (r *Todos_AddToListReq) Prepare() error { var errs []string if r.List.IsEmpty() { errs = append(errs, "list id is required") } if r.Item.IsEmpty() { errs = append(errs, "item id is required") } if len(errs) > 0 { return &ValidationError{Errors: errs} } return nil } func (r *Todos_RemoveFromListReq) Prepare() error { var errs []string if r.List.IsEmpty() { errs = append(errs, "list id is required") } if r.Item.IsEmpty() { errs = append(errs, "item id is required") } if len(errs) > 0 { return &ValidationError{Errors: errs} } return nil } func (r *Todos_GetListReq) Prepare() error { return nil } func (r *Todos_ListListsReq) Prepare() error { return nil } func (r *Todos_DeleteListReq) Prepare() error { return nil } func (r *Todos_GetItemReq) Prepare() error { return nil } func (r *Todos_ListItemsReq) Prepare() error { return nil } func (r *Todos_DeleteItemReq) Prepare() error { return nil }