Skip to content

Commit d4d6931

Browse files
committed
Fix sync bugs
Signed-off-by: Daishan Peng <[email protected]>
1 parent 12db481 commit d4d6931

File tree

2 files changed

+60
-34
lines changed

2 files changed

+60
-34
lines changed

dist/index.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,18 @@ function main() {
9595
// Fetch all pages
9696
const pages = yield fetchAllPages();
9797
let metadata = new Map();
98-
const outputDir = path_1.default.join(process.env.WORKSPACE_DIR, 'knowledge', 'integrations', 'notion');
98+
const outputDir = path_1.default.join(process.env.WORKSPACE_DIR, "knowledge", "integrations", "notion");
9999
yield (0, promises_1.mkdir)(outputDir, { recursive: true });
100-
const metadataPath = path_1.default.join(outputDir, 'metadata.json');
100+
const metadataPath = path_1.default.join(outputDir, "metadata.json");
101101
if (fs.existsSync(metadataPath)) {
102-
metadata = new Map(Object.entries(JSON.parse(fs.readFileSync(metadataPath, 'utf8').toString())));
102+
metadata = new Map(Object.entries(JSON.parse(fs.readFileSync(metadataPath, "utf8").toString())));
103103
}
104104
let updatedPages = 0;
105105
for (const page of pages) {
106106
if (metadata.has(page.id)) {
107107
const entry = metadata.get(page.id);
108-
if ((entry === null || entry === void 0 ? void 0 : entry.updatedAt) === page.last_edited_time && fs.existsSync(getPath(outputDir, page))) {
108+
if ((entry === null || entry === void 0 ? void 0 : entry.updatedAt) === page.last_edited_time &&
109+
fs.existsSync(getPath(outputDir, page))) {
109110
continue;
110111
}
111112
if (entry === null || entry === void 0 ? void 0 : entry.sync) {
@@ -119,12 +120,14 @@ function main() {
119120
sync: (_a = entry === null || entry === void 0 ? void 0 : entry.sync) !== null && _a !== void 0 ? _a : false,
120121
});
121122
}
122-
metadata.set(page.id, {
123-
url: page.url,
124-
filename: path_1.default.basename(getPath(outputDir, page)),
125-
updatedAt: page.last_edited_time,
126-
sync: false,
127-
});
123+
else {
124+
metadata.set(page.id, {
125+
url: page.url,
126+
filename: path_1.default.basename(getPath(outputDir, page)),
127+
updatedAt: page.last_edited_time,
128+
sync: false,
129+
});
130+
}
128131
}
129132
for (const [key, _] of metadata) {
130133
if (!pages.find((page) => page.id === key)) {
@@ -133,7 +136,7 @@ function main() {
133136
metadata.delete(key);
134137
}
135138
}
136-
yield (0, promises_1.writeFile)(metadataPath, JSON.stringify(Object.fromEntries(metadata)), 'utf8');
139+
yield (0, promises_1.writeFile)(metadataPath, JSON.stringify(Object.fromEntries(metadata)), "utf8");
137140
console.log(`Finished writing ${updatedPages} pages to ${outputDir}`);
138141
});
139142
}

src/index.ts

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,18 @@ async function main() {
2222
const pageContent = await getPageContent(notion, pageId);
2323
const fileDir = path.join(directory, pageId.toString());
2424
await mkdir(fileDir, { recursive: true });
25-
const filePath = getPath(directory, page)
25+
const filePath = getPath(directory, page);
2626
fs.writeFileSync(filePath, pageContent, "utf8");
2727
}
2828

2929
function getPath(directory: string, page: PageObjectResponse): string {
3030
const pageId = page.id;
3131
const fileDir = path.join(directory, pageId.toString());
32-
let title = ((page.properties?.title ?? page.properties?.Name) as any)?.title[0]?.plain_text?.trim().replaceAll(/\//g, "-");
32+
let title = (
33+
(page.properties?.title ?? page.properties?.Name) as any
34+
)?.title[0]?.plain_text
35+
?.trim()
36+
.replaceAll(/\//g, "-");
3337
if (!title) {
3438
title = pageId.toString();
3539
}
@@ -41,7 +45,6 @@ async function main() {
4145
let pages: any[] = [];
4246
let cursor: string | undefined = undefined;
4347

44-
4548
while (true) {
4649
const response: SearchResponse = await notion.search({
4750
filter: {
@@ -65,43 +68,59 @@ async function main() {
6568

6669
// Fetch all pages
6770
const pages = await fetchAllPages();
68-
let metadata: Map<string, {
69-
url: string;
70-
filename: string
71-
updatedAt: string;
72-
sync: boolean;
73-
}> = new Map();
74-
const outputDir = path.join(process.env.WORKSPACE_DIR!!, 'knowledge', 'integrations', 'notion');
71+
let metadata: Map<
72+
string,
73+
{
74+
url: string;
75+
filename: string;
76+
updatedAt: string;
77+
sync: boolean;
78+
}
79+
> = new Map();
80+
const outputDir = path.join(
81+
process.env.WORKSPACE_DIR!!,
82+
"knowledge",
83+
"integrations",
84+
"notion"
85+
);
7586
await mkdir(outputDir, { recursive: true });
76-
const metadataPath = path.join(outputDir, 'metadata.json');
87+
const metadataPath = path.join(outputDir, "metadata.json");
7788
if (fs.existsSync(metadataPath)) {
78-
metadata = new Map(Object.entries(JSON.parse(fs.readFileSync(metadataPath, 'utf8').toString())));
89+
metadata = new Map(
90+
Object.entries(
91+
JSON.parse(fs.readFileSync(metadataPath, "utf8").toString())
92+
)
93+
);
7994
}
8095

8196
let updatedPages = 0;
8297
for (const page of pages) {
8398
if (metadata.has(page.id)) {
84-
const entry = metadata.get(page.id)
85-
if (entry?.updatedAt === page.last_edited_time && fs.existsSync(getPath(outputDir, page))) {
99+
const entry = metadata.get(page.id);
100+
if (
101+
entry?.updatedAt === page.last_edited_time &&
102+
fs.existsSync(getPath(outputDir, page))
103+
) {
86104
continue;
87105
}
88106
if (entry?.sync) {
89-
updatedPages++
107+
updatedPages++;
90108
await writePageToFile(page, outputDir);
91109
}
92110
metadata.set(page.id, {
93111
url: page.url,
94112
filename: path.basename(getPath(outputDir, page)),
95113
updatedAt: page.last_edited_time,
96114
sync: entry?.sync ?? false,
97-
})
115+
});
116+
} else {
117+
metadata.set(page.id, {
118+
url: page.url,
119+
filename: path.basename(getPath(outputDir, page)),
120+
updatedAt: page.last_edited_time,
121+
sync: false,
122+
});
98123
}
99-
metadata.set(page.id, {
100-
url: page.url,
101-
filename: path.basename(getPath(outputDir, page)),
102-
updatedAt: page.last_edited_time,
103-
sync: false,
104-
})
105124
}
106125

107126
for (const [key, _] of metadata) {
@@ -112,7 +131,11 @@ async function main() {
112131
}
113132
}
114133

115-
await writeFile(metadataPath, JSON.stringify(Object.fromEntries(metadata)), 'utf8');
134+
await writeFile(
135+
metadataPath,
136+
JSON.stringify(Object.fromEntries(metadata)),
137+
"utf8"
138+
);
116139

117140
console.log(`Finished writing ${updatedPages} pages to ${outputDir}`);
118141
}

0 commit comments

Comments
 (0)