45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import {database} from "./start";
|
|
import {Dict, Group} from "../types";
|
|
import {Filter, ObjectId, WithId} from "mongodb";
|
|
|
|
export interface GroupData {
|
|
groups: Dict<Group>,
|
|
ignored: string[],
|
|
base: string[]
|
|
}
|
|
|
|
type InsertMeta<T> = T & {
|
|
createdOn: Date,
|
|
modifiedOn: Date,
|
|
accessedOn: Date
|
|
}
|
|
|
|
type GroupFilter = Filter<InsertMeta<GroupData>>
|
|
|
|
export async function setGroups(data: GroupData) {
|
|
const collection = (await database.resolve())?.collection<InsertMeta<GroupData>>('setups')
|
|
if (!collection) return
|
|
const result = await collection.insertOne({
|
|
...data,
|
|
createdOn: new Date(),
|
|
modifiedOn: new Date(),
|
|
accessedOn: new Date()
|
|
})
|
|
console.log(result.insertedId, result.insertedId.toString())
|
|
return result.insertedId.toString()
|
|
}
|
|
|
|
|
|
export async function getGroup(uuid: string) {
|
|
const collection = (await database.resolve())?.collection<InsertMeta<GroupData>>('setups')
|
|
if (!collection) return
|
|
console.log(uuid)
|
|
const data = (await collection.findOne({
|
|
_id: new ObjectId(uuid)
|
|
} as GroupFilter)) ?? undefined
|
|
if (data) {
|
|
await collection.updateOne({_id: new ObjectId(uuid)}, { $set: {accessedOn: new Date()}})
|
|
}
|
|
return data
|
|
}
|