4 | {/* 头部导航 */}
5 |
16 |
17 | {/* Hero区域 */}
18 |
19 |
20 |
21 |
向阳乔木个人网站
22 |
分享AI探索、实践,精选各类工具,一起学习进步。
23 |
24 |
25 |
26 |
27 | {/* 主内容区 */}
28 |
29 |
30 |
简化版主页
31 |
这是一个简化版的主页,用于测试是否有遮罩层问题。
32 |
33 |
34 |
35 | {/* 页脚 */}
36 |
41 |
42 | );
43 | }
44 |
--------------------------------------------------------------------------------
/src/app/api/links/[id]/route.ts:
--------------------------------------------------------------------------------
1 | import { NextRequest, NextResponse } from 'next/server';
2 | import { getLink, updateLink, deleteLink } from '@/lib/actions/links';
3 |
4 | // GET - 获取单个链接
5 | export async function GET(
6 | request: NextRequest,
7 | { params }: { params: Promise<{ id: string }> }
8 | ) {
9 | try {
10 | const { id: idParam } = await params;
11 | const id = parseInt(idParam);
12 |
13 | const link = await getLink(id);
14 |
15 | return NextResponse.json(link);
16 | } catch (error) {
17 | console.error('获取链接失败:', error);
18 | return NextResponse.json(
19 | { error: error instanceof Error ? error.message : '获取链接失败' },
20 | { status: 500 }
21 | );
22 | }
23 | }
24 |
25 | // PUT - 更新链接
26 | export async function PUT(
27 | request: NextRequest,
28 | { params }: { params: Promise<{ id: string }> }
29 | ) {
30 | try {
31 | const { id: idParam } = await params;
32 | const id = parseInt(idParam);
33 |
34 | const data = await request.json();
35 |
36 | const link = await updateLink(id, data);
37 |
38 | return NextResponse.json({
39 | success: true,
40 | message: '链接更新成功',
41 | link
42 | });
43 | } catch (error) {
44 | console.error('更新链接失败:', error);
45 | return NextResponse.json(
46 | { error: error instanceof Error ? error.message : '更新链接失败' },
47 | { status: 500 }
48 | );
49 | }
50 | }
51 |
52 | // DELETE - 删除链接
53 | export async function DELETE(
54 | request: NextRequest,
55 | { params }: { params: Promise<{ id: string }> }
56 | ) {
57 | try {
58 | const { id: idParam } = await params;
59 | const id = parseInt(idParam);
60 |
61 | await deleteLink(id);
62 |
63 | return NextResponse.json({
64 | success: true,
65 | message: '链接删除成功'
66 | });
67 | } catch (error) {
68 | console.error('删除链接失败:', error);
69 | return NextResponse.json(
70 | { error: error instanceof Error ? error.message : '删除链接失败' },
71 | { status: 500 }
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/app/api/settings/route.ts:
--------------------------------------------------------------------------------
1 | import { NextResponse } from 'next/server';
2 | import { db } from '@/lib/db';
3 | import * as schema from '@/lib/schema';
4 | import { eq } from 'drizzle-orm';
5 |
6 | // 获取所有网站设置
7 | export async function GET(request: Request) {
8 | try {
9 | // 获取网站基本设置
10 | const siteSettings = await db
11 | .select()
12 | .from(schema.siteSettings)
13 | .all();
14 |
15 | // 将设置转换为键值对对象
16 | const settingsMap: Record