Skip to content

Commit aa7f7f4

Browse files
committed
Update package versions and refactor persistence layer to use SQLKit for query building. Remove deprecated persistence repository and enhance article and user management functionalities across services.
1 parent 37fc839 commit aa7f7f4

25 files changed

+1384
-1258
lines changed

bun.lock

Lines changed: 1099 additions & 0 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "techdiary.dev-next",
3-
"version": "0.1.0",
3+
"version": "1.0.12",
44
"private": true,
55
"scripts": {
66
"dev": "next dev",
@@ -50,7 +50,7 @@
5050
"react-hook-form": "^7.55.0",
5151
"recharts": "^2.15.1",
5252
"schema-dts": "^1.1.5",
53-
"sqlkit": "^1.0.8",
53+
"sqlkit": "^1.0.13",
5454
"tailwind-merge": "^3.0.2",
5555
"tw-animate-css": "^1.2.4",
5656
"zod": "^3.24.2"

src/app/(dashboard-editor)/dashboard/articles/[uuid]/page.tsx

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,50 @@
1-
import { Article, ArticleTag, Tag, User } from "@/backend/models/domain-models";
2-
import { persistenceRepository } from "@/backend/persistence-repositories";
1+
import { Tag } from "@/backend/models/domain-models";
32
import { DatabaseTableName } from "@/backend/persistence/persistence-contracts";
4-
import {
5-
and,
6-
eq,
7-
inArray,
8-
leftJoin,
9-
} from "@/backend/persistence/persistence-where-operator";
3+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
104
import * as sessionActions from "@/backend/services/session.actions";
115
import ArticleEditor from "@/components/Editor/ArticleEditor";
126
import { notFound } from "next/navigation";
137
import React from "react";
8+
import { and, eq, inArray } from "sqlkit";
149

1510
interface Props {
1611
params: Promise<{ uuid: string }>;
1712
}
1813
const page: React.FC<Props> = async ({ params }) => {
1914
const sessionUserId = await sessionActions.getSessionUserId();
15+
2016
const _params = await params;
21-
// eq("author_id", sessionUserId)
22-
const [article] = await persistenceRepository.article.findRows({
17+
18+
const [article] = await persistenceRepository.article.find({
2319
limit: 1,
24-
where: and(eq("id", _params.uuid), eq("author_id", sessionUserId)),
20+
where: and(eq("id", _params.uuid), eq("author_id", sessionUserId!)),
2521
joins: [
26-
leftJoin<Article, User>({
22+
{
2723
as: "author",
28-
joinTo: DatabaseTableName.users,
29-
localField: "author_id",
30-
foreignField: "id",
24+
table: DatabaseTableName.users,
25+
type: "left",
26+
on: {
27+
localField: "author_id",
28+
foreignField: "id",
29+
},
3130
columns: ["id", "name", "username"],
32-
}),
31+
},
3332
],
3433
});
3534

36-
const aggregatedTags = await persistenceRepository.articleTag.findRows({
35+
const aggregatedTags = await persistenceRepository.articleTag.find({
3736
where: inArray("article_id", [article.id]),
3837
joins: [
39-
leftJoin<ArticleTag, Tag>({
38+
{
4039
as: "tag",
41-
joinTo: "tags",
42-
localField: "tag_id",
43-
foreignField: "id",
40+
table: "tags",
41+
type: "left",
42+
on: {
43+
localField: "tag_id",
44+
foreignField: "id",
45+
},
4446
columns: ["id", "name", "color", "icon", "description"],
45-
}),
47+
},
4648
],
4749
});
4850

src/app/(dashboard-editor)/dashboard/articles/new/page.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@ import ArticleEditor from "@/components/Editor/ArticleEditor";
22
import React from "react";
33

44
const page = () => {
5-
return (
6-
<>
7-
<ArticleEditor />
8-
</>
9-
);
5+
return <ArticleEditor />;
106
};
117

128
export default page;

src/app/[username]/[articleHandle]/opengraph-image.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { Article, User } from "@/backend/models/domain-models";
2-
import { persistenceRepository } from "@/backend/persistence-repositories";
3-
import { eq, leftJoin } from "@/backend/persistence/persistence-where-operator";
1+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
42
import { ImageResponse } from "next/og";
53
import { readFile } from "node:fs/promises";
64
import { join } from "node:path";
5+
import { eq } from "sqlkit";
76

87
interface ArticlePageProps {
98
params: Promise<{
@@ -25,18 +24,21 @@ const getFileLocation = async (path: string) => {
2524

2625
export default async function Image(options: ArticlePageProps) {
2726
const { articleHandle } = await options.params;
28-
const [article] = await persistenceRepository.article.findRows({
27+
const [article] = await persistenceRepository.article.find({
2928
where: eq("handle", articleHandle),
3029
columns: ["title", "excerpt", "cover_image", "body"],
3130
limit: 1,
3231
joins: [
33-
leftJoin<Article, User>({
32+
{
3433
as: "user",
35-
joinTo: "users",
36-
localField: "author_id",
37-
foreignField: "id",
34+
table: "users",
35+
type: "left",
36+
on: {
37+
localField: "author_id",
38+
foreignField: "id",
39+
},
3840
columns: ["username", "profile_photo"],
39-
}),
41+
},
4042
],
4143
});
4244

src/app/[username]/[articleHandle]/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import HomeLeftSidebar from "@/app/(home)/_components/HomeLeftSidebar";
2-
import { persistenceRepository } from "@/backend/persistence-repositories";
3-
import { eq } from "@/backend/persistence/persistence-where-operator";
2+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
43
import * as articleActions from "@/backend/services/article.actions";
54
import AppImage from "@/components/AppImage";
65
import HomepageLayout from "@/components/layout/HomepageLayout";
@@ -12,6 +11,7 @@ import Image from "next/image";
1211
import Link from "next/link";
1312
import { notFound } from "next/navigation";
1413
import type { Article, WithContext } from "schema-dts";
14+
import { eq } from "sqlkit";
1515
import ArticleSidebar from "./_components/ArticleSidebar";
1616

1717
interface ArticlePageProps {
@@ -26,7 +26,7 @@ export async function generateMetadata(
2626
): Promise<Metadata> {
2727
// read route params
2828
const { articleHandle } = await options.params;
29-
const [article] = await persistenceRepository.article.findRows({
29+
const [article] = await persistenceRepository.article.find({
3030
where: eq("handle", articleHandle),
3131
columns: ["title", "excerpt", "cover_image", "body"],
3232
limit: 1,

src/app/api/play/route.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {persistenceRepository} from "@/backend/persistence-repositories";
2-
import {NextResponse} from "next/server";
1+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
2+
import { NextResponse } from "next/server";
33

44
export async function GET(request: Request) {
55
// [
@@ -15,21 +15,24 @@ export async function GET(request: Request) {
1515
// }
1616
// ]
1717
return NextResponse.json({
18-
handle: await persistenceRepository.articleTag.deleteRows({
18+
handle: await persistenceRepository.articleTag.delete({
1919
where: {
2020
AND: [
2121
{
22-
"key": "article_id",
23-
"operator": "=",
24-
"value": "317eb5cf-9ef5-4ef1-9da7-78007dd83149"
22+
key: "article_id",
23+
operator: "=",
24+
value: "317eb5cf-9ef5-4ef1-9da7-78007dd83149",
2525
},
2626
{
27-
"key": "tag_id",
28-
"operator": "not in",
29-
"value": ["060f882f-e40e-415b-bc06-ed618f77d9bc", "2e27c4b0-226d-41ed-ae3f-3f9ac493b6a7"]
30-
}
31-
]
32-
}
27+
key: "tag_id",
28+
operator: "not in",
29+
value: [
30+
"060f882f-e40e-415b-bc06-ed618f77d9bc",
31+
"2e27c4b0-226d-41ed-ae3f-3f9ac493b6a7",
32+
],
33+
},
34+
],
35+
},
3336
}),
3437
});
3538
}

src/app/sitemaps/articles/sitemap.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
import { Article, User } from "@/backend/models/domain-models";
2-
import { persistenceRepository } from "@/backend/persistence-repositories";
3-
import {
4-
and,
5-
eq,
6-
leftJoin,
7-
neq,
8-
} from "@/backend/persistence/persistence-where-operator";
1+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
2+
93
import type { MetadataRoute } from "next";
4+
import { and, eq, neq } from "sqlkit";
105

116
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
12-
const articles = await persistenceRepository.article.findRows({
7+
const articles = await persistenceRepository.article.find({
138
where: and(eq("is_published", true), neq("approved_at", null)),
149
columns: ["handle", "updated_at"],
1510
limit: -1,
1611
joins: [
17-
leftJoin<Article, User>({
12+
{
1813
as: "user",
19-
joinTo: "users",
20-
localField: "author_id",
21-
foreignField: "id",
14+
table: "users",
15+
type: "left",
16+
on: {
17+
localField: "author_id",
18+
foreignField: "id",
19+
},
2220
columns: ["id", "username"],
23-
}),
21+
},
2422
],
2523
});
2624

src/app/sitemaps/profiles/sitemap.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { persistenceRepository } from "@/backend/persistence-repositories";
1+
import { persistenceRepository } from "@/backend/persistence/persistence-repositories";
22
import type { MetadataRoute } from "next";
33

44
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
5-
const profiles = await persistenceRepository.user.findRows({
5+
const profiles = await persistenceRepository.user.find({
66
columns: ["username"],
77
limit: -1,
88
});

0 commit comments

Comments
 (0)