Commit ab261170 authored by duanjinfei's avatar duanjinfei

cache annoument and fix crwal data and fix cache app filed

parent 50de159f
v2.0.0
\ No newline at end of file
v2.1.1
\ No newline at end of file
......@@ -277,6 +277,11 @@ async function getTonAppInfo(supabase) {
...cleanedApp,
category_id: categoryInfo.id
};
if (!insertApp.appPlatforms && !insertApp.description && !insertApp.images && insertApp.images == [] && (!insertApp.link || insertApp.link == "https://")) {
continue
} else if (!insertApp.appPlatforms && !insertApp.description && (!insertApp.images || insertApp.images == [])) {
insertApp.is_forward = true
}
console.log("insert app name", insertApp.name);
appsToInsert.push(insertApp);
}
......
......@@ -14,7 +14,7 @@ async function fetchAllData(supabase, table: string, pageSize: number = 1000) {
while (true) {
const { data, error } = await supabase
.from(table)
.select('id,name,icon,description,points,category_id,link,images,appPlatforms,caption,is_forward,is_show,recommend,category(is_show)') // 可以根据需要调整字段
.select('id,name,icon,points,link,appPlatforms,caption,category_id,is_forward,recommend,category(is_show)') // 可以根据需要调整字段
.gt('is_show', 0)
.gt('recommend', 0)
// .eq('is_show', 1)
......@@ -93,6 +93,32 @@ async function cacheTaskCount(supabase, directory, bucketName) {
}
}
async function cacheAnnouncementData(supabase, directory, bucketName) {
const pageFileName = `${directory}/announcement_data.json`;
let { data: announcementData, error: announcementError } = await supabase
.from("announcement")
.select("comment")
.is('deleted_at', null)
.order("update_at", { ascending: false })
.limit(0, 1);
const pageJson = JSON.stringify(announcementData);
const { error: pageUploadError } = await supabase.storage
.from(bucketName)
.upload(pageFileName, new Blob([pageJson]), {
contentType: 'application/json',
upsert: true,
});
if (pageUploadError) {
console.error(`Error uploading announcement_data JSON:`, pageUploadError);
} else {
console.log(`Uploading announcement_data JSON scuccessful`);
}
}
async function cacheRecommendApp(supabase, allApps, directory, bucketName) {
const recommendPageSize = 3;
// const recommendApps = allApps.filter(app => app.recommend > 0)
......@@ -163,17 +189,9 @@ Deno.serve(async (req) => {
EdgeRuntime.waitUntil(cacheTaskCount(supabase, directory, bucketName));
EdgeRuntime.waitUntil(cacheRecommendApp(supabase, allApps, directory, bucketName));
// (async () => {
// try {
// await cacheTaskCount(supabase, directory, bucketName)
EdgeRuntime.waitUntil(cacheAnnouncementData(supabase, directory, bucketName));
// await cacheRecommendApp(supabase, allApps, directory, bucketName)
// } catch (error) {
// console.error('Background crawl error:', error)
// }
// })()
EdgeRuntime.waitUntil(cacheRecommendApp(supabase, allApps, directory, bucketName));
return new Response(
JSON.stringify({
......
......@@ -14,7 +14,7 @@ async function fetchAllData(supabase, table: string, pageSize: number = 1000) {
while (true) {
const { data, error } = await supabase
.from(table)
.select('id,name,icon,description,points,category_id,link,images,appPlatforms,caption,is_forward,is_show,category(is_show)') // 可以根据需要调整字段
.select('id,name,icon,points,link,appPlatforms,caption,category_id,is_forward,category(is_show)') // 可以根据需要调整字段
.gt('is_show', 0)
// .eq('is_show', 1)
.eq("category.is_show", true)
......@@ -97,6 +97,12 @@ async function cacheAllApp(supabase) {
}
async function cacheCategoryApp(supabase, allApps, directory, bucketName) {
let categoryInfo = {
app_all: {
title: "ALL",
count: allApps.length,
}
}
let categoryCount = {
app_all: allApps.length,
}
......@@ -108,17 +114,27 @@ async function cacheCategoryApp(supabase, allApps, directory, bucketName) {
}
groupedData[app.category_id].push(app);
});
const { data: categoryData, error } = await supabase.from('category').select('id,title').eq('is_show', true)
const categoryMap = new Map(categoryData?.map(category => [category.id, category.title]));
console.log("categoryMap");
if (error) {
console.error("getCategoryInfo error:", error);
}
// 上传每个 category_id 的分页数据
for (const [categoryId, apps] of Object.entries(groupedData)) {
console.log("categoryId:", categoryId);
const totalCount = apps.length; // 当前分类的总数
categoryCount[categoryId] = totalCount
//缓存每个分类的app数据
const pageSize = 30;
const paginatedApps = [];
for (let i = 0; i < totalCount; i += pageSize) {
paginatedApps.push(apps.slice(i, i + pageSize));
}
categoryInfo[categoryId] = {
title: categoryMap.get(categoryId),
count: totalCount
}
categoryCount[categoryId] = totalCount
// 遍历分页数据并上传
for (let pageNum = 1; pageNum <= paginatedApps.length; pageNum++) {
const pageApps = paginatedApps[pageNum - 1];
......@@ -146,24 +162,42 @@ async function cacheCategoryApp(supabase, allApps, directory, bucketName) {
console.log(`Uploading page ${categoryId}_${pageNum}.json JSON successful`);
}
}
}
const categoryCountFileName = `${directory}/category_count.json`;
const categoryCountJson = JSON.stringify(categoryCount);
// 缓存分类信息的数据
const categoryInfoFileName = `${directory}/category_Info.json`;
const categoryInfoJson = JSON.stringify(categoryInfo);
const { error: categoryInfoUploadError } = await supabase.storage
.from(bucketName)
.upload(categoryInfoFileName, new Blob([categoryInfoJson]), {
contentType: 'application/json',
upsert: true,
});
if (categoryInfoUploadError) {
console.error(
`Error uploading category_info JSON:`,
categoryInfoUploadError
);
} else {
console.log(`Uploading page category_info JSON successful`);
}
const { error: categoryCountUploadError } = await supabase.storage
.from(bucketName)
.upload(categoryCountFileName, new Blob([categoryCountJson]), {
contentType: 'application/json',
upsert: true,
});
if (categoryCountUploadError) {
console.error(
`Error uploading category_count JSON:`,
categoryCountUploadError
);
} else {
console.log(`Uploading page category_count JSON successful`);
}
// 缓存分类数量的数据
const categoryCountFileName = `${directory}/category_count.json`;
const categoryCountJson = JSON.stringify(categoryCount);
const { error: categoryCountUploadError } = await supabase.storage
.from(bucketName)
.upload(categoryCountFileName, new Blob([categoryCountJson]), {
contentType: 'application/json',
upsert: true,
});
if (categoryCountUploadError) {
console.error(
`Error uploading category_count JSON:`,
categoryCountUploadError
);
} else {
console.log(`Uploading page category_count JSON successful`);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment