You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.1 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. import type Group from "./group";
  2. import type Item from "./item";
  3. import type { LogResult } from "./log";
  4. export default interface Goal {
  5. id: string
  6. groupId: string
  7. itemId?: string
  8. startTime: string
  9. endTime: string
  10. amount: number
  11. name: string
  12. description: string
  13. unweighted: boolean
  14. compositionMode: string
  15. }
  16. export interface GoalFilter {
  17. minTime?: Date
  18. maxTime?: Date
  19. includesTime?: Date
  20. }
  21. export interface GoalResult extends Goal {
  22. group: Group
  23. items: GoalResultItem[]
  24. logs: LogResult[]
  25. completedAmount: number
  26. }
  27. interface GoalResultItem extends Item {
  28. completedAmount: number
  29. }
  30. export interface GoalInput {
  31. groupId: string
  32. itemId: string
  33. startTime: string | Date
  34. endTime: string | Date
  35. amount: number
  36. name: string
  37. description: string
  38. unweighted: boolean
  39. compositionMode: string
  40. }
  41. export interface GoalUpdate {
  42. itemId?: string
  43. startTime?: string | Date
  44. endTime?: string | Date
  45. amount?: number
  46. name?: string
  47. description?: string
  48. unweighted?: boolean
  49. compositionMode?: string
  50. clearItemId?: boolean
  51. }