Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Dashboards
Tabler
提交
a76df723
T
Tabler
项目概览
Dashboards
/
Tabler
大约 1 年 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tabler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a76df723
编写于
8月 15, 2023
作者:
T
tabler.developer@gmail.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
prisma and auth init
上级
90f4931c
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
363 addition
and
64 deletion
+363
-64
site/.env.example
site/.env.example
+38
-0
site/.gitignore
site/.gitignore
+1
-0
site/app/api/auth/[...nextauth]/route.ts
site/app/api/auth/[...nextauth]/route.ts
+5
-0
site/app/layout.tsx
site/app/layout.tsx
+2
-1
site/components/NextAuthProvider.tsx
site/components/NextAuthProvider.tsx
+11
-0
site/components/layout/Header.tsx
site/components/layout/Header.tsx
+22
-20
site/components/layout/Signin.tsx
site/components/layout/Signin.tsx
+8
-3
site/components/layout/Signup.tsx
site/components/layout/Signup.tsx
+1
-1
site/lib/auth.ts
site/lib/auth.ts
+18
-0
site/lib/prisma.ts
site/lib/prisma.ts
+14
-0
site/package.json
site/package.json
+5
-0
site/pnpm-lock.yaml
site/pnpm-lock.yaml
+106
-39
site/prisma/migrations/20230814193559_init/migration.sql
site/prisma/migrations/20230814193559_init/migration.sql
+67
-0
site/prisma/migrations/migration_lock.toml
site/prisma/migrations/migration_lock.toml
+3
-0
site/prisma/schema.prisma
site/prisma/schema.prisma
+62
-0
未找到文件。
site/.env.example
0 → 100644
浏览文件 @
a76df723
# * Create an .env file with the following content:
# Created by Vercel CLI
NEXT_PUBLIC_APP_URL=""
NX_DAEMON=""
TURBO_REMOTE_ONLY=""
TURBO_RUN_SUMMARY=""
VERCEL=""
VERCEL_ENV=""
VERCEL_GIT_COMMIT_AUTHOR_LOGIN=""
VERCEL_GIT_COMMIT_AUTHOR_NAME=""
VERCEL_GIT_COMMIT_MESSAGE=""
VERCEL_GIT_COMMIT_REF=""
VERCEL_GIT_COMMIT_SHA=""
VERCEL_GIT_PREVIOUS_SHA=""
VERCEL_GIT_PROVIDER=""
VERCEL_GIT_PULL_REQUEST_ID=""
VERCEL_GIT_REPO_ID=""
VERCEL_GIT_REPO_OWNER=""
VERCEL_GIT_REPO_SLUG=""
VERCEL_URL=""
# Postgres
POSTGRES_URL=""
POSTGRES_PRISMA_URL=""
POSTGRES_URL_NON_POOLING=""
POSTGRES_USER=""
POSTGRES_HOST=""
POSTGRES_PASSWORD=""
POSTGRES_DATABASE=""
# Providers
GITHUB_ID=""
GITHUB_SECRET=""
# Auth config
NEXTAUTH_SECRET=""
NEXTAUTH_URL=""
site/.gitignore
浏览文件 @
a76df723
...
...
@@ -25,6 +25,7 @@ yarn-error.log*
# local env files
.env
.env.local
.env*.local
.env.development.local
.env.test.local
.env.production.local
...
...
site/app/api/auth/[...nextauth]/route.ts
0 → 100644
浏览文件 @
a76df723
import
NextAuth
from
'
next-auth
'
;
import
{
authConfig
}
from
'
@/lib/auth
'
;
const
authHandler
=
NextAuth
(
authConfig
);
export
{
authHandler
as
GET
,
authHandler
as
POST
};
site/app/layout.tsx
浏览文件 @
a76df723
...
...
@@ -2,6 +2,7 @@ import '@/styles/website.scss';
import
{
creator
,
description
,
name
,
uiUrl
}
from
'
@/config/site
'
;
import
PageProgress
from
'
@/components/PageProgress
'
;
import
{
NextAuthProvider
}
from
'
@/components/NextAuthProvider
'
;
export
const
metadata
=
{
title
:
{
...
...
@@ -74,7 +75,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
</
head
>
<
body
className
=
"body-gradient"
>
<
PageProgress
/>
{
children
}
<
NextAuthProvider
>
{
children
}
</
NextAuthProvider
>
<
link
rel
=
"stylesheet"
href
=
"https://rsms.me/inter/inter.css"
/>
<
script
src
=
"https://assets.lemonsqueezy.com/lemon.js"
defer
/>
</
body
>
...
...
site/components/NextAuthProvider.tsx
0 → 100644
浏览文件 @
a76df723
'
use client
'
;
import
{
SessionProvider
}
from
'
next-auth/react
'
;
type
Props
=
{
children
?:
React
.
ReactNode
;
};
export
const
NextAuthProvider
=
({
children
}:
Props
)
=>
{
return
<
SessionProvider
>
{
children
}
</
SessionProvider
>;
};
\ No newline at end of file
site/components/layout/Header.tsx
浏览文件 @
a76df723
...
...
@@ -20,6 +20,7 @@ import Link from '@/components/Link';
import
NavLink
from
'
@/components/NavLink
'
;
import
Shape
from
'
@/components/Shape
'
;
import
{
usePathname
}
from
'
next/navigation
'
;
import
{
signOut
,
useSession
}
from
'
next-auth/react
'
;
const
NavDropdown
=
({
title
,
children
,
active
,
footer
=
false
})
=>
{
return
(
...
...
@@ -117,7 +118,7 @@ const menuLinks = [
{
menu
:
'
sponsors
'
,
href
:
sponsorsUrl
,
type
:
'
b
lankB
utton
'
,
type
:
'
button
'
,
title
:
(
<
span
>
Sponsor
<
span
className
=
"d-none lg:d-inline"
>
project
</
span
>
...
...
@@ -125,31 +126,12 @@ const menuLinks = [
),
icon
:
<
Icon
name
=
"heart"
filled
color
=
"red"
/>,
},
{
menu
:
'
signin
'
,
href
:
'
/signin
'
,
type
:
'
button
'
,
title
:
(
<
span
>
Login
</
span
>
),
},
];
const
NavbarLink
=
(
link
,
menu
)
=>
{
// const router = useRouter()
if
(
link
.
type
===
'
button
'
)
{
return
(
<
div
className
=
"navbar-item"
>
<
a
href
=
{
link
.
href
}
className
=
"btn"
>
{
link
.
icon
}
{
link
.
title
}
</
a
>
</
div
>
);
}
else
if
(
link
.
type
===
'
blankButton
'
)
{
return
(
<
div
className
=
"navbar-item"
>
<
a
href
=
{
link
.
href
}
className
=
"btn"
target
=
"_blank"
rel
=
"noopener noreferrer"
>
...
...
@@ -229,8 +211,28 @@ const Navbar = ({
onClick
?:
(
event
:
React
.
MouseEvent
)
=>
void
;
className
?:
string
})
=>
{
const
{
data
:
session
,
status
}
=
useSession
();
return
<
div
className
=
{
clsx
(
'
navbar
'
,
opened
&&
'
opened
'
,
props
.
className
)
}
>
{
menuLinks
.
map
((
link
)
=>
(<
Fragment
key
=
{
link
.
menu
}
>
{
NavbarLink
(
link
,
menu
)
}
</
Fragment
>))
}
<
div
className
=
"navbar-item"
>
{
!
session
&&
<
a
href
=
"/api/auth/signin"
className
=
"btn"
>
{
status
===
'
loading
'
?
'
Validating session ...
'
:
'
Log in
'
}
</
a
>
}
{
session
&&
<
a
onClick
=
{
()
=>
signOut
()
}
className
=
"btn"
>
Log out
</
a
>
}
</
div
>
</
div
>;
};
...
...
site/components/layout/Signin.tsx
浏览文件 @
a76df723
...
...
@@ -3,9 +3,14 @@
import
Link
from
'
@/components/Link
'
;
import
{
useRouter
}
from
'
next/navigation
'
;
import
Icon
from
'
@/components/Icon
'
;
import
{
signIn
}
from
'
next-auth/react
'
;
export
default
function
Signin
()
{
const
router
=
useRouter
();
const
router
=
useRouter
();
'
/
'
;
const
handleLogin
=
async
(
provider
:
'
github
'
):
Promise
<
void
>
=>
{
await
signIn
(
provider
,
{
callbackUrl
:
'
/
'
});
};
return
(
<>
...
...
@@ -37,12 +42,12 @@ export default function Signin() {
<
div
className
=
"card-body"
>
<
div
className
=
"row"
>
<
div
className
=
"col"
>
<
a
href
=
"#"
className
=
"btn w-100"
>
<
a
onClick
=
{
()
=>
handleLogin
(
'
github
'
)
}
className
=
"btn w-100"
>
<
Icon
name
=
"brand-github"
/>
Login with Github
</
a
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className
=
"text-center text-secondary mt-3"
>
...
...
site/components/layout/Signup.tsx
浏览文件 @
a76df723
...
...
@@ -31,7 +31,7 @@ export default function Signup() {
</
form
>
<
div
className
=
"text-center text-secondary mt-3"
>
Already have account?
<
a
className
=
"ml-2"
onClick
=
{
()
=>
router
.
push
(
'
/signin
'
)
}
>
<
a
className
=
"ml-2"
onClick
=
{
()
=>
router
.
push
(
'
/
api/auth/
signin
'
)
}
>
Sign in
</
a
>
</
div
>
</>
...
...
site/lib/auth.ts
0 → 100644
浏览文件 @
a76df723
import
{
PrismaAdapter
}
from
'
@next-auth/prisma-adapter
'
;
import
GitHubProvider
from
'
next-auth/providers/github
'
;
import
prisma
from
'
@/lib/prisma
'
;
export
const
authConfig
=
{
providers
:
[
GitHubProvider
({
clientId
:
process
.
env
.
GITHUB_ID
as
string
,
clientSecret
:
process
.
env
.
GITHUB_SECRET
as
string
,
}),
],
pages
:
{
signIn
:
'
/signin
'
,
},
adapter
:
PrismaAdapter
(
prisma
),
secret
:
process
.
env
.
NEXTAUTH_SECRET
,
database
:
process
.
env
.
POSTGRES_PRISMA_URL
,
};
site/lib/prisma.ts
0 → 100644
浏览文件 @
a76df723
import
{
PrismaClient
}
from
'
@prisma/client
'
;
let
prisma
:
PrismaClient
;
if
(
process
.
env
.
NODE_ENV
===
'
production
'
)
{
prisma
=
new
PrismaClient
();
}
else
{
if
(
!
global
.
prisma
)
{
global
.
prisma
=
new
PrismaClient
();
}
prisma
=
global
.
prisma
;
}
export
default
prisma
;
\ No newline at end of file
site/package.json
浏览文件 @
a76df723
...
...
@@ -25,8 +25,10 @@
"@headlessui/react"
:
"^1.7.16"
,
"@mdx-js/loader"
:
"^2.3.0"
,
"@mdx-js/react"
:
"2.3.0"
,
"@next-auth/prisma-adapter"
:
"^1.0.7"
,
"@next/env"
:
"^13.4.12"
,
"@next/mdx"
:
"^13.4.12"
,
"@prisma/client"
:
"5.1.1"
,
"@sindresorhus/slugify"
:
"^2.2.1"
,
"@svgr/webpack"
:
"^8.0.1"
,
"@tabler/icons"
:
"^2.30.0"
,
...
...
@@ -113,5 +115,8 @@
"unist-util-visit"
:
"^5.0.0"
,
"webpack"
:
"^5.88.2"
,
"yaml"
:
"^2.3.1"
},
"devDependencies"
:
{
"prisma"
:
"^5.1.1"
}
}
site/pnpm-lock.yaml
浏览文件 @
a76df723
lockfileVersion
:
'
6.0'
settings
:
autoInstallPeers
:
true
excludeLinksFromLockfile
:
false
dependencies
:
'
@glidejs/glide'
:
specifier
:
^3.6.0
...
...
@@ -13,12 +17,18 @@ dependencies:
'
@mdx-js/react'
:
specifier
:
2.3.0
version
:
2.3.0(react@18.2.0)
'
@next-auth/prisma-adapter'
:
specifier
:
^1.0.7
version
:
1.0.7(@prisma/client@5.1.1)(next-auth@4.22.3)
'
@next/env'
:
specifier
:
^13.4.12
version
:
13.4.12
'
@next/mdx'
:
specifier
:
^13.4.12
version
:
13.4.12(@mdx-js/loader@2.3.0)(@mdx-js/react@2.3.0)
'
@prisma/client'
:
specifier
:
5.1.1
version
:
5.1.1(prisma@5.1.1)
'
@sindresorhus/slugify'
:
specifier
:
^2.2.1
version
:
2.2.1
...
...
@@ -84,7 +94,7 @@ dependencies:
version
:
8.2.0
contentlayer
:
specifier
:
^0.3.4
version
:
0.3.4(markdown-wasm@1.2.0)
version
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
date-fns
:
specifier
:
^2.30.0
version
:
2.30.0
...
...
@@ -159,13 +169,13 @@ dependencies:
version
:
1.1.3
next
:
specifier
:
^13.4.12
version
:
13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
version
:
13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
next-auth
:
specifier
:
^4.22.3
version
:
4.22.3(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
next-contentlayer
:
specifier
:
^0.3.4
version
:
0.3.4(contentlayer@0.3.4)(markdown-wasm@1.2.0)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
version
:
0.3.4(contentlayer@0.3.4)(
esbuild@0.17.18)(
markdown-wasm@1.2.0)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
next-mdx-remote
:
specifier
:
^4.4.1
version
:
4.4.1(react-dom@18.2.0)(react@18.2.0)
...
...
@@ -273,11 +283,16 @@ dependencies:
version
:
5.0.0
webpack
:
specifier
:
^5.88.2
version
:
5.88.2
version
:
5.88.2
(esbuild@0.17.18)
yaml
:
specifier
:
^2.3.1
version
:
2.3.1
devDependencies
:
prisma
:
specifier
:
^5.1.1
version
:
5.1.1
packages
:
/@ampproject/remapping@2.2.0
:
...
...
@@ -1677,32 +1692,35 @@ packages:
to-fast-properties
:
2.0.0
dev
:
false
/@contentlayer/cli@0.3.4(markdown-wasm@1.2.0)
:
/@contentlayer/cli@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-vNDwgLuhYNu+m70NZ3XK9kexKNguuxPXg7Yvzj3B34cEilQjjzSrcTY/i+AIQm9V7uT5GGshx9ukzPf+SmoszQ==
}
dependencies
:
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/utils'
:
0.3.4
clipanion
:
3.2.1
clipanion
:
3.2.1
(typanion@3.12.1)
typanion
:
3.12.1
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
/@contentlayer/client@0.3.4(markdown-wasm@1.2.0)
:
/@contentlayer/client@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-QSlLyc3y4PtdC5lFw0L4wTZUH8BQnv2nk37hNCsPAqGf+dRO7TLAzdc+2/mVIRgK+vSH+pSOzjLsQpFxxXRTZA==
}
dependencies
:
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
/@contentlayer/core@0.3.4(markdown-wasm@1.2.0)
:
/@contentlayer/core@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-o68oBLwfYZ+2vtgfk1lgHxOl3LoxvRNiUfeQ8IWFWy/L4wnIkKIqLZX01zlRE5IzYM+ZMMN5V0cKQlO7DsyR9g==
}
peerDependencies
:
esbuild
:
0.17.x || 0.18.x
markdown-wasm
:
1.x
peerDependenciesMeta
:
esbuild
:
...
...
@@ -1729,10 +1747,10 @@ packages:
-
supports-color
dev
:
false
/@contentlayer/source-files@0.3.4(markdown-wasm@1.2.0)
:
/@contentlayer/source-files@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-4njyn0OFPu7WY4tAjMxiJgWOKeiHuBOGdQ36EYE03iij/pPPRbiWbL+cmLccYXUFEW58mDwpqROZZm6pnxjRDQ==
}
dependencies
:
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/utils'
:
0.3.4
chokidar
:
3.5.3
fast-glob
:
3.2.12
...
...
@@ -1745,18 +1763,20 @@ packages:
zod
:
3.21.4
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
/@contentlayer/source-remote-files@0.3.4(markdown-wasm@1.2.0)
:
/@contentlayer/source-remote-files@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-cyiv4sNUySZvR0uAKlM+kSAELzNd2h2QT1R2e41dRKbwOUVxeLfmGiLugr0aVac6Q3xYcD99dbHyR1xWPV+w9w==
}
dependencies
:
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/source-files'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/source-files'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/utils'
:
0.3.4
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
...
...
@@ -2218,7 +2238,7 @@ packages:
dependencies
:
'
@mdx-js/mdx'
:
2.2.1
source-map
:
0.7.4
webpack
:
5.88.2
webpack
:
5.88.2
(esbuild@0.17.18)
transitivePeerDependencies
:
-
supports-color
dev
:
false
...
...
@@ -2257,6 +2277,16 @@ packages:
react
:
18.2.0
dev
:
false
/@next-auth/prisma-adapter@1.0.7(@prisma/client@5.1.1)(next-auth@4.22.3)
:
resolution
:
{
integrity
:
sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==
}
peerDependencies
:
'
@prisma/client'
:
'
>=2.26.0
||
>=3'
next-auth
:
^4
dependencies
:
'
@prisma/client'
:
5.1.1(prisma@5.1.1)
next-auth
:
4.22.3(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
dev
:
false
/@next/env@13.4.12
:
resolution
:
{
integrity
:
sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==
}
dev
:
false
...
...
@@ -2615,6 +2645,28 @@ packages:
tslib
:
2.4.1
dev
:
false
/@prisma/client@5.1.1(prisma@5.1.1)
:
resolution
:
{
integrity
:
sha512-fxcCeK5pMQGcgCqCrWsi+I2rpIbk0rAhdrN+ke7f34tIrgPwA68ensrpin+9+fZvuV2OtzHmuipwduSY6HswdA==
}
engines
:
{
node
:
'
>=16.13'
}
requiresBuild
:
true
peerDependencies
:
prisma
:
'
*'
peerDependenciesMeta
:
prisma
:
optional
:
true
dependencies
:
'
@prisma/engines-version'
:
5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e
prisma
:
5.1.1
dev
:
false
/@prisma/engines-version@5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e
:
resolution
:
{
integrity
:
sha512-owZqbY/wucbr65bXJ/ljrHPgQU5xXTSkmcE/JcbqE1kusuAXV/TLN3/exmz21SZ5rJ7WDkyk70J2G/n68iogbQ==
}
dev
:
false
/@prisma/engines@5.1.1
:
resolution
:
{
integrity
:
sha512-NV/4nVNWFZSJCCIA3HIFJbbDKO/NARc9ej0tX5S9k2EVbkrFJC4Xt9b0u4rNZWL4V+F5LAjvta8vzEUw0rw+HA==
}
requiresBuild
:
true
/@protobufjs/aspromise@1.1.2
:
resolution
:
{
integrity
:
sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
}
dev
:
false
...
...
@@ -3643,8 +3695,10 @@ packages:
resolution
:
{
integrity
:
sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
}
dev
:
false
/clipanion@3.2.1
:
/clipanion@3.2.1
(typanion@3.12.1)
:
resolution
:
{
integrity
:
sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==
}
peerDependencies
:
typanion
:
'
*'
dependencies
:
typanion
:
3.12.1
dev
:
false
...
...
@@ -3754,20 +3808,21 @@ packages:
proto-list
:
1.2.4
dev
:
false
/contentlayer@0.3.4(markdown-wasm@1.2.0)
:
/contentlayer@0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
:
resolution
:
{
integrity
:
sha512-FYDdTUFaN4yqep0waswrhcXjmMJnPD5iXDTtxcUCGdklfuIrXM2xLx51xl748cHmGA6IsC+27YZFxU6Ym13QIA==
}
engines
:
{
node
:
'
>=14.18'
}
hasBin
:
true
requiresBuild
:
true
dependencies
:
'
@contentlayer/cli'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/client'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/source-files'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/source-remote-files'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/cli'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/client'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/source-files'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/source-remote-files'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/utils'
:
0.3.4
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
...
...
@@ -4656,7 +4711,7 @@ packages:
dependencies
:
loader-utils
:
2.0.4
schema-utils
:
3.1.1
webpack
:
5.88.2
webpack
:
5.88.2
(esbuild@0.17.18)
dev
:
false
/fill-range@7.0.1
:
...
...
@@ -5180,7 +5235,7 @@ packages:
dependencies
:
html-minifier-terser
:
7.1.0
parse5
:
7.1.2
webpack
:
5.88.2
webpack
:
5.88.2
(esbuild@0.17.18)
dev
:
false
/html-minifier-terser@7.1.0
:
...
...
@@ -6860,7 +6915,7 @@ packages:
'
@panva/hkdf'
:
1.0.4
cookie
:
0.5.0
jose
:
4.13.1
next
:
13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
next
:
13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
oauth
:
0.9.15
openid-client
:
5.4.0
preact
:
10.13.1
...
...
@@ -6870,7 +6925,7 @@ packages:
uuid
:
8.3.2
dev
:
false
/next-contentlayer@0.3.4(contentlayer@0.3.4)(markdown-wasm@1.2.0)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
:
/next-contentlayer@0.3.4(contentlayer@0.3.4)(
esbuild@0.17.18)(
markdown-wasm@1.2.0)(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
:
resolution
:
{
integrity
:
sha512-UtUCwgAl159KwfhNaOwyiI7Lg6sdioyKMeh+E7jxx0CJ29JuXGxBEYmCI6+72NxFGIFZKx8lvttbbQhbnYWYSw==
}
peerDependencies
:
contentlayer
:
0.3.4
...
...
@@ -6878,14 +6933,15 @@ packages:
react
:
'
*'
react-dom
:
'
*'
dependencies
:
'
@contentlayer/core'
:
0.3.4(markdown-wasm@1.2.0)
'
@contentlayer/core'
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
'
@contentlayer/utils'
:
0.3.4
contentlayer
:
0.3.4(markdown-wasm@1.2.0)
next
:
13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
contentlayer
:
0.3.4(
esbuild@0.17.18)(
markdown-wasm@1.2.0)
next
:
13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
react
:
18.2.0
react-dom
:
18.2.0(react@18.2.0)
transitivePeerDependencies
:
-
'
@effect-ts/otel-node'
-
esbuild
-
markdown-wasm
-
supports-color
dev
:
false
...
...
@@ -6918,10 +6974,10 @@ packages:
'
@next/env'
:
13.4.12
fast-glob
:
3.2.12
minimist
:
1.2.8
next
:
13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
next
:
13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
dev
:
false
/next@13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
:
/next@13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
:
resolution
:
{
integrity
:
sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==
}
engines
:
{
node
:
'
>=16.8.0'
}
hasBin
:
true
...
...
@@ -6940,6 +6996,7 @@ packages:
optional
:
true
dependencies
:
'
@next/env'
:
13.4.12
'
@opentelemetry/api'
:
1.4.1
'
@swc/helpers'
:
0.5.1
busboy
:
1.6.0
caniuse-lite
:
1.0.30001464
...
...
@@ -6947,7 +7004,7 @@ packages:
react
:
18.2.0
react-dom
:
18.2.0(react@18.2.0)
sass
:
1.64.1
styled-jsx
:
5.1.1(react@18.2.0)
styled-jsx
:
5.1.1(
@babel/core@7.21.4)(
react@18.2.0)
watchpack
:
2.4.0
zod
:
3.21.4
optionalDependencies
:
...
...
@@ -6973,7 +7030,7 @@ packages:
react-dom
:
'
>=
16.0.0'
dependencies
:
'
@types/nprogress'
:
0.2.0
next
:
13.4.12(react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
next
:
13.4.12(
@babel/core@7.21.4)(@opentelemetry/api@1.4.1)(
react-dom@18.2.0)(react@18.2.0)(sass@1.64.1)
nprogress
:
0.2.0
prop-types
:
15.8.1
react
:
18.2.0
...
...
@@ -7407,6 +7464,14 @@ packages:
resolution
:
{
integrity
:
sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==
}
dev
:
false
/prisma@5.1.1
:
resolution
:
{
integrity
:
sha512-WJFG/U7sMmcc6TjJTTifTfpI6Wjoh55xl4AzopVwAdyK68L9/ogNo8QQ2cxuUjJf/Wa82z/uhyh3wMzvRIBphg==
}
engines
:
{
node
:
'
>=16.13'
}
hasBin
:
true
requiresBuild
:
true
dependencies
:
'
@prisma/engines'
:
5.1.1
/prismjs@1.27.0
:
resolution
:
{
integrity
:
sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==
}
engines
:
{
node
:
'
>=6'
}
...
...
@@ -8286,7 +8351,7 @@ packages:
inline-style-parser
:
0.1.1
dev
:
false
/styled-jsx@5.1.1(react@18.2.0)
:
/styled-jsx@5.1.1(
@babel/core@7.21.4)(
react@18.2.0)
:
resolution
:
{
integrity
:
sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==
}
engines
:
{
node
:
'
>=
12.0.0'
}
peerDependencies
:
...
...
@@ -8299,6 +8364,7 @@ packages:
babel-plugin-macros
:
optional
:
true
dependencies
:
'
@babel/core'
:
7.21.4
client-only
:
0.0.1
react
:
18.2.0
dev
:
false
...
...
@@ -8359,7 +8425,7 @@ packages:
engines
:
{
node
:
'
>=6'
}
dev
:
false
/terser-webpack-plugin@5.3.7(webpack@5.88.2)
:
/terser-webpack-plugin@5.3.7(
esbuild@0.17.18)(
webpack@5.88.2)
:
resolution
:
{
integrity
:
sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==
}
engines
:
{
node
:
'
>=
10.13.0'
}
peerDependencies
:
...
...
@@ -8376,11 +8442,12 @@ packages:
optional
:
true
dependencies
:
'
@jridgewell/trace-mapping'
:
0.3.17
esbuild
:
0.17.18
jest-worker
:
27.5.1
schema-utils
:
3.3.0
serialize-javascript
:
6.0.1
terser
:
5.17.1
webpack
:
5.88.2
webpack
:
5.88.2
(esbuild@0.17.18)
dev
:
false
/terser@5.17.1
:
...
...
@@ -8797,7 +8864,7 @@ packages:
engines
:
{
node
:
'
>=10.13.0'
}
dev
:
false
/webpack@5.88.2
:
/webpack@5.88.2
(esbuild@0.17.18)
:
resolution
:
{
integrity
:
sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==
}
engines
:
{
node
:
'
>=10.13.0'
}
hasBin
:
true
...
...
@@ -8828,7 +8895,7 @@ packages:
neo-async
:
2.6.2
schema-utils
:
3.3.0
tapable
:
2.2.1
terser-webpack-plugin
:
5.3.7(webpack@5.88.2)
terser-webpack-plugin
:
5.3.7(
esbuild@0.17.18)(
webpack@5.88.2)
watchpack
:
2.4.0
webpack-sources
:
3.2.3
transitivePeerDependencies
:
...
...
site/prisma/migrations/20230814193559_init/migration.sql
0 → 100644
浏览文件 @
a76df723
-- CreateTable
CREATE
TABLE
"accounts"
(
"id"
TEXT
NOT
NULL
,
"user_id"
TEXT
NOT
NULL
,
"type"
TEXT
NOT
NULL
,
"provider"
TEXT
NOT
NULL
,
"provider_account_id"
TEXT
NOT
NULL
,
"refresh_token"
TEXT
,
"access_token"
TEXT
,
"expires_at"
INTEGER
,
"token_type"
TEXT
,
"scope"
TEXT
,
"id_token"
TEXT
,
"session_state"
TEXT
,
"refresh_token_expires_in"
INTEGER
,
CONSTRAINT
"accounts_pkey"
PRIMARY
KEY
(
"id"
)
);
-- CreateTable
CREATE
TABLE
"sessions"
(
"id"
TEXT
NOT
NULL
,
"session_token"
TEXT
NOT
NULL
,
"user_id"
TEXT
NOT
NULL
,
"expires"
TIMESTAMP
(
3
)
NOT
NULL
,
CONSTRAINT
"sessions_pkey"
PRIMARY
KEY
(
"id"
)
);
-- CreateTable
CREATE
TABLE
"users"
(
"id"
TEXT
NOT
NULL
,
"name"
TEXT
,
"email"
TEXT
,
"email_verified"
TIMESTAMP
(
3
),
"image"
TEXT
,
CONSTRAINT
"users_pkey"
PRIMARY
KEY
(
"id"
)
);
-- CreateTable
CREATE
TABLE
"verificationtokens"
(
"identifier"
TEXT
NOT
NULL
,
"token"
TEXT
NOT
NULL
,
"expires"
TIMESTAMP
(
3
)
NOT
NULL
);
-- CreateIndex
CREATE
UNIQUE
INDEX
"accounts_provider_provider_account_id_key"
ON
"accounts"
(
"provider"
,
"provider_account_id"
);
-- CreateIndex
CREATE
UNIQUE
INDEX
"sessions_session_token_key"
ON
"sessions"
(
"session_token"
);
-- CreateIndex
CREATE
UNIQUE
INDEX
"users_email_key"
ON
"users"
(
"email"
);
-- CreateIndex
CREATE
UNIQUE
INDEX
"verificationtokens_token_key"
ON
"verificationtokens"
(
"token"
);
-- CreateIndex
CREATE
UNIQUE
INDEX
"verificationtokens_identifier_token_key"
ON
"verificationtokens"
(
"identifier"
,
"token"
);
-- AddForeignKey
ALTER
TABLE
"accounts"
ADD
CONSTRAINT
"accounts_user_id_fkey"
FOREIGN
KEY
(
"user_id"
)
REFERENCES
"users"
(
"id"
)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
;
-- AddForeignKey
ALTER
TABLE
"sessions"
ADD
CONSTRAINT
"sessions_user_id_fkey"
FOREIGN
KEY
(
"user_id"
)
REFERENCES
"users"
(
"id"
)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
;
site/prisma/migrations/migration_lock.toml
0 → 100644
浏览文件 @
a76df723
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider
=
"postgresql"
\ No newline at end of file
site/prisma/schema.prisma
0 → 100644
浏览文件 @
a76df723
generator
client
{
provider
=
"prisma-client-js"
}
datasource
db
{
provider
=
"postgresql"
url
=
env
(
"POSTGRES_PRISMA_URL"
)
//
uses
connection
pooling
directUrl
=
env
(
"POSTGRES_URL_NON_POOLING"
)
//
uses
a
direct
connection
shadowDatabaseUrl
=
env
(
"POSTGRES_URL_NON_POOLING"
)
//
used
for
migrations
}
model
Account
{
id
String
@
id
@
default
(
cuid
())
userId
String
@
map
(
"user_id"
)
type
String
provider
String
providerAccountId
String
@
map
(
"provider_account_id"
)
refresh_token
String
?
@
db
.
Text
access_token
String
?
@
db
.
Text
expires_at
Int
?
token_type
String
?
scope
String
?
id_token
String
?
@
db
.
Text
session_state
String
?
refresh_token_expires_in
Int
?
user
User
@
relation
(
fields
:
[
userId
],
references
:
[
id
],
onDelete
:
Cascade
)
@@
unique
([
provider
,
providerAccountId
])
@@
map
(
"accounts"
)
}
model
Session
{
id
String
@
id
@
default
(
cuid
())
sessionToken
String
@
unique
@
map
(
"session_token"
)
userId
String
@
map
(
"user_id"
)
expires
DateTime
user
User
@
relation
(
fields
:
[
userId
],
references
:
[
id
],
onDelete
:
Cascade
)
@@
map
(
"sessions"
)
}
model
User
{
id
String
@
id
@
default
(
cuid
())
name
String
?
email
String
?
@
unique
emailVerified
DateTime
?
@
map
(
"email_verified"
)
image
String
?
accounts
Account
[]
sessions
Session
[]
@@
map
(
"users"
)
}
model
VerificationToken
{
identifier
String
token
String
@
unique
expires
DateTime
@@
unique
([
identifier
,
token
])
@@
map
(
"verificationtokens"
)
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录