43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
import Model from "./model.js";
|
|
import { coordinatesToGeoJson } from "../../helpers/geoJson.helper.js";
|
|
import dayjs from "dayjs";
|
|
// Create
|
|
export const createLocation = async (data) => {
|
|
const geoJson = coordinatesToGeoJson(data.coordinates);
|
|
return await Model.create({
|
|
...data,
|
|
coordinates: geoJson,
|
|
createdOn: dayjs().toISOString(),
|
|
});
|
|
};
|
|
|
|
// Read (Get by ID)
|
|
export const getLocationById = async (id) => {
|
|
return await Model.findById(id);
|
|
};
|
|
|
|
// Read (Get by Query)
|
|
export const getLocationByQuery = async (query) => {
|
|
return await Model.findOne(query);
|
|
};
|
|
|
|
// Read (Get by Radius)
|
|
export const getLocationByRadius = async (radius) => {
|
|
return await Model.find(query);
|
|
};
|
|
|
|
// Read (Get all)
|
|
export const getAllLocations = async () => {
|
|
return await Model.find();
|
|
};
|
|
|
|
// Update
|
|
export const updateLocation = async (id, data) => {
|
|
return await Model.findByIdAndUpdate(id, data, { new: true });
|
|
};
|
|
|
|
// Aggregate
|
|
export const aggregateLocation = async (pipeline) => {
|
|
return await Model.aggregate(pipeline);
|
|
};
|