mirror of https://github.com/abpframework/abp
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.6 KiB
						
					
					
				using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using AbpPerfTest.WithoutAbp.Dtos;
 | 
						|
using AbpPerfTest.WithoutAbp.Entities;
 | 
						|
using AbpPerfTest.WithoutAbp.EntityFramework;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
 | 
						|
namespace AbpPerfTest.WithoutAbp.Controllers
 | 
						|
{
 | 
						|
    [Route("api/books")]
 | 
						|
    public class BookController : Controller
 | 
						|
    {
 | 
						|
        private readonly BookDbContext _bookDbContext;
 | 
						|
 | 
						|
        public BookController(BookDbContext bookDbContext)
 | 
						|
        {
 | 
						|
            _bookDbContext = bookDbContext;
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpGet]
 | 
						|
        public async Task<List<BookDto>> GetListAsync()
 | 
						|
        {
 | 
						|
            var books = await _bookDbContext.Books.OrderBy(x => x.Id).Take(10).ToListAsync();
 | 
						|
 | 
						|
            return books
 | 
						|
                .Select(b => new BookDto
 | 
						|
                {
 | 
						|
                    Id = b.Id,
 | 
						|
                    Name = b.Name,
 | 
						|
                    Price = b.Price,
 | 
						|
                    IsAvailable = b.IsAvailable
 | 
						|
                })
 | 
						|
                .ToList();
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpGet]
 | 
						|
        [Route("{id}")]
 | 
						|
        public async Task<BookDto> GetAsync(Guid id)
 | 
						|
        {
 | 
						|
            var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
 | 
						|
 | 
						|
            return new BookDto
 | 
						|
            {
 | 
						|
                Id = book.Id,
 | 
						|
                Name = book.Name,
 | 
						|
                Price = book.Price,
 | 
						|
                IsAvailable = book.IsAvailable
 | 
						|
            };
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpPost]
 | 
						|
        public async Task<Guid> CreateAsync([FromBody] CreateUpdateBookDto input)
 | 
						|
        {
 | 
						|
            var book = new Book
 | 
						|
            {
 | 
						|
                Name = input.Name,
 | 
						|
                Price = input.Price,
 | 
						|
                IsAvailable = input.IsAvailable
 | 
						|
            };
 | 
						|
 | 
						|
            await _bookDbContext.Books.AddAsync(book);
 | 
						|
            await _bookDbContext.SaveChangesAsync();
 | 
						|
 | 
						|
            return book.Id;
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpPut]
 | 
						|
        [Route("{id}")]
 | 
						|
        public async Task UpdateAsync(Guid id, [FromBody] CreateUpdateBookDto input)
 | 
						|
        {
 | 
						|
            var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
 | 
						|
 | 
						|
            book.Name = input.Name;
 | 
						|
            book.Price = input.Price;
 | 
						|
            book.IsAvailable = input.IsAvailable;
 | 
						|
 | 
						|
            await _bookDbContext.SaveChangesAsync();
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpDelete]
 | 
						|
        [Route("{id}")]
 | 
						|
        public async Task DeleteAsync(Guid id)
 | 
						|
        {
 | 
						|
            var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
 | 
						|
 | 
						|
            _bookDbContext.Books.Remove(book);
 | 
						|
            await _bookDbContext.SaveChangesAsync();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |