refactor(db): typed query helpers, shared test FormData helper
Replace raw db.execute tuple casts with queryRows/rowsFrom/execResult/ affectedRows helpers from lib/db, drop redundant mysql2 casts on typed query builders, and centralize per-test fakeForm into test/fake-form. Update db mocks in tests so helpers resolve against mocked execute.
This commit is contained in:
1 parent
2e25b39364
commit
8638e81444
116 files changed
+866
-897
No files matched your search
@@ -18,6 +18,7 @@ import {
|
||||
} from "@/lib/article-input";
|
||||
import {
|
||||
db,
|
||||
rowsFrom,
|
||||
WebsiteArticleComments,
|
||||
WebsiteArticleReactions,
|
||||
WebsiteArticles,
|
||||
@@ -128,11 +129,9 @@ export async function createArticle(
|
||||
updatedAt: now,
|
||||
publishedAt: fields.status === "published" ? now : null,
|
||||
});
|
||||
const [createdRows] = await tx.execute(
|
||||
sql`SELECT CAST(LAST_INSERT_ID() AS CHAR) AS id`,
|
||||
);
|
||||
const articleId = (createdRows as unknown as Array<{ id: string }>)[0]
|
||||
?.id;
|
||||
const articleId = rowsFrom<{ id: string }>(
|
||||
await tx.execute(sql`SELECT CAST(LAST_INSERT_ID() AS CHAR) AS id`),
|
||||
)[0]?.id;
|
||||
if (!articleId || !/^[1-9][0-9]*$/.test(articleId))
|
||||
throw new Error("Article identity unavailable");
|
||||
await enqueueEffect(tx, operationId, "news.refresh");
|
||||
|
||||
Reference in new issue
Block a user