dyomedea/src/db/trkseg.ts

49 lines
1.1 KiB
TypeScript
Raw Normal View History

import getUri from '../lib/ids';
2022-11-27 15:18:50 +00:00
import { appendToArray } from './gpx';
import { getFamily, put } from './lib';
import { putNewTrk } from './trk';
const emptyTrkseg: Trkseg = {
trkpt: undefined,
extensions: undefined,
};
export const putNewTrkseg = async (id?: IdTrk | IdGpx | IdTrkseg) => {
let finalId = { ...id };
if (!('trkseg' in finalId)) {
const trkId = await putNewTrk(id);
finalId = { ...trkId, trkseg: 0 };
}
const uri = getUri('trkseg', finalId);
await put(
uri,
'trkseg',
(trkseg) => {
return trkseg;
},
emptyTrkseg
);
return finalId as IdTrkseg;
};
export const getTrkseg = async (params: any) => {
const { id } = params;
const docs = await getFamily(id, { include_docs: true });
2022-11-27 15:18:50 +00:00
let target: any[];
let trkseg: Trkseg | undefined = undefined;
docs.rows.forEach((row: any) => {
// level 0
if (row.doc.type === 'trkseg') {
target = [row.doc.doc];
trkseg = row.doc.doc;
}
//level 1
if (row.doc.type === 'trkpt') {
target.splice(1);
2022-11-27 16:12:25 +00:00
appendToArray(target.at(-1), row.doc.type, row.doc.doc);
2022-11-27 15:18:50 +00:00
target.push(row.doc.doc);
}
});
return trkseg;
};