Skip to content

Commit 570ce40

Browse files
authored
Merge pull request #45 from coderKrysio/brat
removed the result schema and collection
2 parents c2d25fd + 427ed16 commit 570ce40

File tree

1 file changed

+57
-83
lines changed

1 file changed

+57
-83
lines changed

app/api/[roomcode]/route.ts

Lines changed: 57 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,70 @@
1-
import { RoomCodeRouteContext } from '@/lib/types'
2-
import clientPromise from '@/utils/newdb'
1+
import clientPromise from "@/utils/newdb";
32

4-
export async function GET(_request: Request, context: RoomCodeRouteContext) {
5-
try {
6-
const client = await clientPromise
7-
const db = client.db('get_interval')
8-
let result: any[] = []
93

10-
const results = await db
11-
.collection('result')
12-
.find({ roomcode: context.params.roomcode })
13-
.limit(1)
14-
.toArray()
4+
type RoomCodeRouteContext = {
5+
params: {
6+
roomcode: string,
7+
}
8+
}
159

16-
if (results.length === 0) {
17-
const rooms = await db
18-
.collection('rooms')
19-
.find({ roomcode: context.params.roomcode })
20-
.limit(15)
21-
.toArray()
10+
export async function GET(request:Request, context: RoomCodeRouteContext){
11+
try {
12+
const client = await clientPromise;
13+
const db = client.db("get_interval");
14+
let result : any[] = [];
2215

23-
// console.log(rooms)
16+
const rooms = await db.collection("rooms").find({roomcode:context.params.roomcode}).limit(15).toArray();
17+
18+
//to get all the intervals in a single array
19+
let intervals:any[] = [[]];
20+
let counter = 0;
21+
for(let i=0;i<rooms.length;i++){
22+
var room=rooms[i].timeRanges;
23+
for(let j=0;j<room.length;j++){
24+
intervals[counter] = room[j];
25+
counter++;
26+
}
27+
}
2428

25-
//to get all the intervals in a single array
26-
let intervals: any[] = [[]]
27-
let counter = 0
28-
for (let i = 0; i < rooms.length; i++) {
29-
var room = rooms[i].timeRanges
30-
for (let j = 0; j < room.length; j++) {
31-
intervals[counter] = room[j]
32-
counter++
33-
}
34-
}
29+
//to sort the array
30+
for (let i = 0; i < intervals.length-1; i++) {
31+
for (let j = 0; j < intervals.length-1-i; j++) {
32+
if(intervals[j][0]>intervals[j+1][0]){
33+
let t=intervals[j];
34+
intervals[j]=intervals[j+1];
35+
intervals[j+1]=t;
36+
}
37+
}
38+
}
3539

36-
//to sort the array
37-
for (let i = 0; i < intervals.length - 1; i++) {
38-
for (let j = 0; j < intervals.length - 1 - i; j++) {
39-
if (intervals[j][0] > intervals[j + 1][0]) {
40-
let t = intervals[j]
41-
intervals[j] = intervals[j + 1]
42-
intervals[j + 1] = t
43-
}
44-
}
40+
//to merge the intervals
41+
let finalintervals : any[];
42+
finalintervals = [[intervals[0][0], intervals[0][1]]]
43+
for(let i=0;i<intervals.length;i++){
44+
if(finalintervals[finalintervals.length -1][1]>=intervals[i][0]){
45+
finalintervals[finalintervals.length-1][1]= Math.max(finalintervals[finalintervals.length-1][1],intervals[i][1]);
4546
}
46-
47-
//to merge the intervals
48-
let finalintervals: any[]
49-
finalintervals = [[intervals[0][0], intervals[0][1]]]
50-
for (let i = 0; i < intervals.length; i++) {
51-
if (
52-
finalintervals[finalintervals.length - 1][1] >=
53-
intervals[i][0]
54-
) {
55-
finalintervals[finalintervals.length - 1][1] = Math.max(
56-
finalintervals[finalintervals.length - 1][1],
57-
intervals[i][1]
58-
)
59-
} else {
60-
finalintervals.push(intervals[i])
61-
}
47+
else{
48+
finalintervals.push(intervals[i]);
6249
}
50+
}
6351

64-
// console.log(finalintervals);
65-
66-
//to get the free intervals
67-
result = [[0, finalintervals[0][0]]]
68-
for (let i = 1; i < finalintervals.length; i++) {
69-
result[i] = [
70-
finalintervals[i - 1][1] + 1,
71-
finalintervals[i][0] - 1,
72-
]
73-
}
74-
result[result.length] = [
75-
finalintervals[finalintervals.length - 1][1] + 1,
76-
1439,
77-
]
78-
// console.log(result);
79-
80-
await db.collection('result').insertOne({
81-
roomcode: context.params.roomcode,
82-
result: result,
83-
})
84-
console.log('Saved Successfully!')
85-
} else {
86-
result = await results[0].result
87-
// console.log(result)
52+
//to get the free intervals
53+
let j=0;
54+
if(finalintervals[0][0]!==0){
55+
result[0] = [[0, finalintervals[0][0]-1]];
56+
++j;
57+
}
58+
for(let i=1;i<finalintervals.length;i++){
59+
result[j]=[finalintervals[i-1][1]+1,finalintervals[i][0]-1];
60+
j++;
61+
}
62+
if(finalintervals[finalintervals.length-1][1]<1439){
63+
result[result.length]=[finalintervals[finalintervals.length-1][1]+1, 1439];
8864
}
8965

90-
return new Response(JSON.stringify(result), { status: 200 })
66+
return new Response(JSON.stringify(result), {status:200});
9167
} catch (error) {
92-
return new Response('Failed to fetch the data, Try again later!!', {
93-
status: 500,
94-
})
68+
return new Response("Failed to fetch the data, Try again later!!", {status:500});
9569
}
96-
}
70+
}

0 commit comments

Comments
 (0)