-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add unique constrait for offsets #36
Conversation
思考,会不会有两个range,本来的start end是不同的,结果一通edit之后,他俩的range变得相同了。现在的处理是怎么样的呀 |
我理解可能性不大,如果有的话,会正常处理的 |
啊我是说如果我加了这个constraint,这个case是不是就爆了 |
ummm,这个倒不会,目前确实可以保证 |
okk,那我们merge一把这个吧。我找gpt老师学习了一把,我们这里的七条sql应该可以简化成三条(需要加上这个constrait)。这里分别是三个 get or insert的逻辑。 export async function postComment(env: Env, req: PostComment) {
const db = env.DB;
// 插入页面(如果不存在)并返回 ID
const pageResult = await db.prepare(`
INSERT INTO pages (path) VALUES (?)
ON CONFLICT (path) DO UPDATE SET id = id
RETURNING id
`).bind(req.path).first();
const pageId = pageResult.id;
// 插入偏移量(如果不存在)并返回 ID
const offsetResult = await db.prepare(`
INSERT INTO offsets (page_id, start, end)
VALUES (?, ?, ?)
ON CONFLICT (page_id, start, end) DO UPDATE SET id = id
RETURNING id
`).bind(pageId, req.offset.start, req.offset.end).first();
const offsetId = offsetResult.id;
// 插入评论
await db.prepare(`
INSERT INTO comments (offset_id, commenter_id, comment, created_time)
VALUES (
?,
(SELECT id FROM commenters WHERE oauth_provider = ? AND oauth_user_id = ?),
?,
?
)
`).bind(
offsetId,
req.commenter.oauth_provider,
req.commenter.oauth_user_id,
req.comment,
new Date().toISOString()
).run();
} |
@shaokeyibb 我有点担心现在加入unique约束之后会没法处理这样的case。假如之前有两个offset,它们是不同的。经过一番修改之后,他俩变得一样了。 |
ummm,如果有这个情况那确实会打架...但是真的会有吗 |
No description provided.