https://ridwandevjourney.vercel.app/posts/apply-generic-repository-pattern-typescript/