File size: 2,118 Bytes
4bea261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { getCountries, saveCountry, deleteCountry, bulkDeleteCountries, syncFromMovies } from '../../../lib/localDb.js';

export async function GET({ request }) {
  try {
    const list = await getCountries();
    return new Response(JSON.stringify(list));
  } catch (e) {
    return new Response(JSON.stringify({ error: e.message }), { status: 500 });
  }
}

export async function POST({ request }) {
  const cookies = request.headers.get('cookie') || '';
  if (!cookies.includes('auth_token=')) {
    return new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 });
  }

  try {
    const { slug, name, sync } = await request.json();
    if (sync) {
      const list = await syncFromMovies('countries');
      return new Response(JSON.stringify({ message: 'Đồng bộ quốc gia thành công!', list }));
    }

    if (!slug || !name) {
      return new Response(JSON.stringify({ error: 'Slug và Tên quốc gia không được để trống' }), { status: 400 });
    }

    const list = await saveCountry(slug, name);
    return new Response(JSON.stringify({ message: 'Lưu quốc gia thành công!', list }));
  } catch (e) {
    return new Response(JSON.stringify({ error: e.message }), { status: 500 });
  }
}

export async function DELETE({ request }) {
  const cookies = request.headers.get('cookie') || '';
  if (!cookies.includes('auth_token=')) {
    return new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 });
  }

  try {
    const { slug, slugs } = await request.json();
    let list;
    if (slugs && Array.isArray(slugs)) {
      list = await bulkDeleteCountries(slugs);
      return new Response(JSON.stringify({ message: `Đã xóa hàng loạt ${slugs.length} quốc gia!`, list }));
    }

    if (!slug) {
      return new Response(JSON.stringify({ error: 'Thiếu slug quốc gia để xóa' }), { status: 400 });
    }

    list = await deleteCountry(slug);
    return new Response(JSON.stringify({ message: 'Xóa quốc gia thành công!', list }));
  } catch (e) {
    return new Response(JSON.stringify({ error: e.message }), { status: 500 });
  }
}