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);
}
}