Ringtone app
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.
 
 
 

84 lines
1.6 KiB

  1. import {models} from '@tonality/library-common'
  2. export default class MockRingtoneRepository {
  3. constructor(private items: models.Ringtone[]) {}
  4. async get(id: string) {
  5. return this.items.find(item => item.id === id)
  6. }
  7. async browse(skip: number, take: number) {
  8. return this.items.slice(skip, skip + take)
  9. }
  10. async search(q: string) {
  11. return this.items.filter(item => item.name.toLowerCase().includes(q.toLowerCase()))
  12. }
  13. async create(data: Partial<models.Ringtone>) {
  14. let newItem: models.Ringtone
  15. this.items.push(newItem = {
  16. id: data.id,
  17. name: data.name,
  18. data: data.data,
  19. createdAt: data.createdAt,
  20. updatedAt: data.updatedAt,
  21. deletedAt: null,
  22. composerId: data.composerId,
  23. })
  24. return newItem
  25. }
  26. async update(data: Partial<models.Ringtone>) {
  27. let updated: models.Ringtone
  28. this.items = this.items.map(item => (
  29. item.id === data.id
  30. ? (updated = {
  31. ...item,
  32. ...data,
  33. id: item.id,
  34. })
  35. : item
  36. ))
  37. return updated
  38. }
  39. async softDelete(id: string, deletedAt: Date) {
  40. let deleted: models.Ringtone
  41. this.items = this.items.map(item => (
  42. item.id === id
  43. ? (deleted = {
  44. ...item,
  45. deletedAt,
  46. })
  47. : item
  48. ))
  49. return deleted
  50. }
  51. async undoDelete(id: string) {
  52. let undo: models.Ringtone
  53. this.items = this.items.map(item => (
  54. item.id === id
  55. ? (undo = {
  56. ...item,
  57. deletedAt: null,
  58. })
  59. : item
  60. ))
  61. return undo
  62. }
  63. async hardDelete(id: string) {
  64. let deleted: models.Ringtone
  65. this.items = this.items.filter(item => {
  66. if (item.id === id) {
  67. deleted = item
  68. return false
  69. }
  70. return true
  71. })
  72. return deleted
  73. }
  74. }