Server is done
This commit is contained in:
37
src/app/api/relationships/checkRelationshipStatus/route.ts
Normal file
37
src/app/api/relationships/checkRelationshipStatus/route.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { checkRelationshipStatus } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { RelationshipData } from '~/server/types';
|
||||
|
||||
export const GET = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const userId = Number.parseInt(url.searchParams.get('userId') ?? '');
|
||||
if (!userId || isNaN(userId))
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing userId' }, { status: 400 }
|
||||
);
|
||||
const relationshipData: RelationshipData | null = await checkRelationshipStatus(userId);
|
||||
if (!relationshipData) {
|
||||
return NextResponse.json(
|
||||
{ message: 'No relationship data found' }, { status: 404 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(relationshipData);
|
||||
} catch (error) {
|
||||
console.error('Error checking relationship status:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json(
|
||||
{ message: error.message }, { status: 500 }
|
||||
);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ message: 'Unknown error occurred' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
38
src/app/api/relationships/createRequest/route.ts
Normal file
38
src/app/api/relationships/createRequest/route.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { createRelationshipRequest } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { RelationshipData } from '~/server/types';
|
||||
|
||||
export const POST = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const userId = Number.parseInt(url.searchParams.get('userId') ?? '');
|
||||
const partnerId = Number.parseInt(url.searchParams.get('partnerId') ?? '');
|
||||
if (!userId || !partnerId || isNaN(userId) || isNaN(partnerId))
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing userId or partnerId' }, { status: 400 }
|
||||
);
|
||||
const relationshipData: RelationshipData | null = await createRelationshipRequest(userId, partnerId);
|
||||
if (!relationshipData) {
|
||||
return NextResponse.json(
|
||||
{ message: 'Error creating relationship request' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(relationshipData);
|
||||
} catch (error) {
|
||||
console.error('Error creating relationship request:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json(
|
||||
{ message: error.message }, { status: 500 }
|
||||
);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ message: 'Unknown error occurred' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
40
src/app/api/relationships/updateStatus/route.ts
Normal file
40
src/app/api/relationships/updateStatus/route.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { updateRelationshipStatus } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { RelationshipData } from '~/server/types';
|
||||
|
||||
export const POST = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const userId = Number.parseInt(url.searchParams.get('userId') ?? '');
|
||||
const status = url.searchParams.get('status');
|
||||
if (!userId || !status || isNaN(userId))
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing userId or status' }, { status: 400 }
|
||||
);
|
||||
const theStatus = status === 'accepted' ? 'accepted' : 'rejected';
|
||||
const relationshipData: RelationshipData | null | undefined =
|
||||
await updateRelationshipStatus(userId, theStatus);
|
||||
if (!relationshipData || relationshipData === undefined) {
|
||||
return NextResponse.json(
|
||||
{ message: 'Error updating relationship status' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(relationshipData);
|
||||
} catch (error) {
|
||||
console.error('Error updating relationship status:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json(
|
||||
{ message: error.message }, { status: 500 }
|
||||
);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ message: 'Unknown error occurred' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
36
src/app/api/users/createUser/route.ts
Normal file
36
src/app/api/users/createUser/route.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { createUser } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { User } from '~/server/types';
|
||||
|
||||
export const POST = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const appleId = url.searchParams.get('appleId');
|
||||
const email = url.searchParams.get('email');
|
||||
const fullName = url.searchParams.get('fullName');
|
||||
const pushToken = url.searchParams.get('pushToken');
|
||||
if (!appleId || !email || !fullName || !pushToken)
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing required parameters' }, { status: 400 }
|
||||
);
|
||||
const newUser: User | null = await createUser(appleId, email, fullName, pushToken);
|
||||
if (!newUser) {
|
||||
return NextResponse.json(
|
||||
{ message: 'Error creating user' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(newUser);
|
||||
} catch (error) {
|
||||
console.error('Error creating user:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json({ message: error.message }, { status: 500 });
|
||||
} else {
|
||||
return NextResponse.json({ message: 'Unknown error occurred' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
};
|
25
src/app/api/users/getInitialDataByAppleId/route.ts
Normal file
25
src/app/api/users/getInitialDataByAppleId/route.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { getInitialDataByAppleId } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { InitialData } from '~/server/types';
|
||||
|
||||
export const GET = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const appleId = url.searchParams.get('appleId');
|
||||
if (!appleId)
|
||||
return NextResponse.json({ message: 'Missing appleId' }, { status: 400 });
|
||||
const initialData: InitialData | null = await getInitialDataByAppleId(appleId);
|
||||
if (!initialData) {
|
||||
return NextResponse.json({ message: 'No initial data found' }, { status: 404 });
|
||||
}
|
||||
return NextResponse.json(initialData);
|
||||
} catch (error) {
|
||||
console.error('Error parsing request:', error);
|
||||
return NextResponse.json({ message: 'Invalid request' }, { status: 400 });
|
||||
}
|
||||
};
|
38
src/app/api/users/search/route.ts
Normal file
38
src/app/api/users/search/route.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { searchUsers } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import type { User } from '~/server/types';
|
||||
|
||||
export const GET = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const userId = Number.parseInt(url.searchParams.get('userId') ?? '');
|
||||
const searchTerm = url.searchParams.get('searchTerm');
|
||||
if (!userId || !searchTerm || isNaN(userId))
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing userId or searchTerm' }, { status: 400 }
|
||||
);
|
||||
const users: User[] | undefined = await searchUsers(userId, searchTerm);
|
||||
if (users === undefined) {
|
||||
return NextResponse.json(
|
||||
{ message: 'No users found' }, { status: 404 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(users);
|
||||
} catch (error) {
|
||||
console.error('Error searching users:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json(
|
||||
{ message: error.message }, { status: 500 }
|
||||
);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ message: 'Unknown error occurred' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
71
src/app/api/users/updatePfp/route.ts
Normal file
71
src/app/api/users/updatePfp/route.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { updatePfpUrl, getPfpUrl, getUser } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
import type { User } from '~/server/types';
|
||||
|
||||
const UPLOAD_DIR = path.join(process.cwd(), `public/${process.env.UPLOAD_DIR}`);
|
||||
|
||||
export const POST = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) {
|
||||
console.log('Middleware rejected the request');
|
||||
return middlewareResponse;
|
||||
}
|
||||
try {
|
||||
const formData = await request.formData();
|
||||
const file = formData.get('file') as File | null;
|
||||
const userId = formData.get('userId') as number | null;
|
||||
if (!file || !userId)
|
||||
return NextResponse.json({ message: 'Missing file or userId' }, { status: 400 });
|
||||
if (!file.type.startsWith('image/'))
|
||||
return NextResponse.json({ message: 'Invalid file type' }, { status: 400 });
|
||||
await fs.mkdir(UPLOAD_DIR, { recursive: true });
|
||||
|
||||
// Generate name for the uploaded file
|
||||
const fileExtension = path.extname(file.name);
|
||||
const fileName = `${userId}_${Date.now()}${fileExtension}`;
|
||||
const filePath = path.join(UPLOAD_DIR, fileName);
|
||||
|
||||
// Write the file to the upload directory
|
||||
const buffer = Buffer.from(await file.arrayBuffer());
|
||||
await fs.writeFile(filePath, buffer);
|
||||
const pfpUrl = `/${process.env.UPLOAD_DIR}/${fileName}`;
|
||||
|
||||
// Delete the old pfp file if it exists
|
||||
const oldPfpUrl = await getPfpUrl(userId);
|
||||
if (oldPfpUrl) {
|
||||
const oldFilePath = path.join(process.cwd(), 'public', oldPfpUrl);
|
||||
await fs.unlink(oldFilePath).catch((error) => {
|
||||
console.error('Error deleting old pfp file:', error);
|
||||
});
|
||||
} else {
|
||||
console.log('No old pfp file found');
|
||||
}
|
||||
// Update the pfpUrl in the database
|
||||
const result = await updatePfpUrl(userId, pfpUrl);
|
||||
if (!result) {
|
||||
console.log('Error updating pfp url in database');
|
||||
return NextResponse.json({ message: 'Error updating pfp url in database' }, { status: 500 });
|
||||
}
|
||||
// Get the updated user
|
||||
const user: User | null = await getUser(userId);
|
||||
if (!user) {
|
||||
console.log('Error getting user from database');
|
||||
return NextResponse.json({ message: 'Error getting user from database' }, { status: 500 });
|
||||
}
|
||||
// Return the updated user
|
||||
return NextResponse.json(user);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error updating pfp:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json({ message: error.message }, { status: 500 });
|
||||
} else {
|
||||
return NextResponse.json({ message: 'Unknown error occurred' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
};
|
39
src/app/api/users/updatePushToken/route.ts
Normal file
39
src/app/api/users/updatePushToken/route.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
'use server';
|
||||
import { NextResponse } from 'next/server';
|
||||
import type { NextRequest } from 'next/server';
|
||||
import { updatePushToken } from '~/server/functions';
|
||||
import { middleware } from '~/middleware';
|
||||
|
||||
export const POST = async (request: NextRequest) => {
|
||||
const middlewareResponse = await middleware(request);
|
||||
if (middlewareResponse) return middlewareResponse;
|
||||
try {
|
||||
const url = new URL(request.url);
|
||||
const userId = Number.parseInt(url.searchParams.get('userId') ?? '');
|
||||
const pushToken = url.searchParams.get('pushToken');
|
||||
if (!userId || !pushToken || isNaN(userId))
|
||||
return NextResponse.json(
|
||||
{ message: 'Missing userId or pushToken' }, { status: 400 }
|
||||
);
|
||||
const result = await updatePushToken(userId, pushToken);
|
||||
if (!result) {
|
||||
return NextResponse.json(
|
||||
{ message: 'Error updating push token' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
return NextResponse.json(
|
||||
{ message: 'Push token updated successfully' }, { status: 200 }
|
||||
);
|
||||
} catch (error) {
|
||||
console.error('Error updating push token:', error);
|
||||
if (error instanceof Error) {
|
||||
return NextResponse.json(
|
||||
{ message: error.message }, { status: 500 }
|
||||
);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ message: 'Unknown error occurred' }, { status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user