Newer
Older
NoteApi / Controller / SensorReadingsController.cs
@fabre fabre on 28 Jan 993 bytes SensorReadings
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Results;
using Microsoft.AspNetCore.OData.Routing.Controllers;

public class SensorReadingsController : ODataController
{
    private readonly AppDbContext _db;
    public SensorReadingsController(AppDbContext db) => _db = db;

    // GET /odata/SensorReadings
    [EnableQuery]
    public IQueryable<SensorReading> Get()
        => _db.SensorReadings;

    // GET /odata/SensorReadings(ts=...,location='...')
    [EnableQuery]
    public SingleResult<SensorReading> Get([FromRoute] DateTimeOffset ts, [FromRoute] string location)
        => SingleResult.Create(_db.SensorReadings.Where(x => x.Ts == ts && x.Location == location));

    // POST /odata/SensorReadings
    public async Task<IActionResult> Post([FromBody] SensorReading sensorReading)
    {
        _db.SensorReadings.Add(sensorReading);
        await _db.SaveChangesAsync();

        return Created(sensorReading);
    }
}