/// <summary>
        /// Mengambil semua record
        /// </summary>
        /// <returns>Record table dalam bentuk IEnumerable</returns>
        public async Task <IEnumerable <T> > GetAll()
        {
            using LimestockDbContext context = _contextFactory.CreateDbContext();

            context.Database.EnsureCreated();
            IEnumerable <T> entities = await context.Set <T>().ToListAsync();

            return(entities);
        }
        /// <summary>
        /// Metod untuk mengambil dalata dalam tabel.
        /// </summary>
        /// <param name="id"></param>
        /// <returns>Record dari tabel.</returns>
        public async Task <T> Get(int id)
        {
            using LimestockDbContext context = _contextFactory.CreateDbContext();

            context.Database.EnsureCreated();
            T entity = await context.Set <T>().FirstOrDefaultAsync((e) => e.Id == id);

            return(entity);
        }
        /// <summary>
        /// Metod definisi untuk membuat record baru berdasar entity yang dipassing
        /// </summary>
        /// <param name="entity"></param>
        /// <returns>Entity baru dalam tabel.</returns>
        public async Task <T> Create(T entity)
        {
            using LimestockDbContext context = _contextFactory.CreateDbContext();

            EntityEntry <T> recordBaru = await context.Set <T>().AddAsync(entity);

            await context.SaveChangesAsync();

            return(recordBaru.Entity);
        }
        /// <summary>
        /// Update data tabel dari entity yang dipassing
        /// </summary>
        /// <param name="id"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task <T> Update(int id, T entity)
        {
            using LimestockDbContext context = _contextFactory.CreateDbContext();

            context.Database.EnsureCreated();
            entity.Id = id;
            context.Set <T>().Update(entity);
            await context.SaveChangesAsync();

            return(entity);
        }
        /// <summary>
        /// Method untuk menghapus record berdasar id yang di passing
        /// </summary>
        /// <param name="id"></param>
        /// <returns>Boolean bahwa record telah dihapus</returns>
        public async Task <bool> Delete(int id)
        {
            using LimestockDbContext context = _contextFactory.CreateDbContext();

            context.Database.EnsureCreated();
            T entity = await context.Set <T>().FirstOrDefaultAsync((e) => e.Id == id);

            context.Set <T>().Remove(entity);
            await context.SaveChangesAsync();

            return(true);
        }