create-prisma 0.7.1-pr.52.181.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -19
- package/dist/cli.mjs +2 -32
- package/dist/index.d.mts +25 -1
- package/dist/index.mjs +2 -2290
- package/dist/src-B3hRLZ0U.mjs +2527 -0
- package/package.json +2 -4
- package/templates/create/astro/README.md.hbs +14 -7
- package/templates/create/astro/astro.config.mjs.hbs +0 -11
- package/templates/create/astro/deno.json.hbs +5 -0
- package/templates/create/astro/prisma/schema.prisma.hbs +5 -0
- package/templates/create/astro/prisma/seed.ts.hbs +5 -1
- package/templates/create/astro/prisma.compute.ts.hbs +10 -0
- package/templates/create/astro/src/lib/prisma.ts.hbs +4 -18
- package/templates/create/astro/src/pages/api/users.ts.hbs +11 -1
- package/templates/create/astro/src/pages/index.astro.hbs +176 -36
- package/templates/create/elysia/README.md.hbs +13 -7
- package/templates/create/elysia/deno.json.hbs +5 -0
- package/templates/create/elysia/package.json.hbs +3 -4
- package/templates/create/elysia/prisma/schema.prisma.hbs +6 -0
- package/templates/create/elysia/prisma/seed.ts.hbs +5 -1
- package/templates/create/elysia/prisma.compute.ts.hbs +11 -0
- package/templates/create/elysia/src/index.ts.hbs +17 -13
- package/templates/create/elysia/src/lib/prisma.ts.hbs +4 -18
- package/templates/create/elysia/tsconfig.json +0 -1
- package/templates/create/hono/README.md.hbs +13 -7
- package/templates/create/hono/deno.json.hbs +5 -0
- package/templates/create/hono/package.json.hbs +2 -2
- package/templates/create/hono/prisma/schema.prisma.hbs +6 -0
- package/templates/create/hono/prisma/seed.ts.hbs +5 -1
- package/templates/create/hono/prisma.compute.ts.hbs +10 -0
- package/templates/create/hono/src/index.ts.hbs +7 -9
- package/templates/create/hono/src/lib/prisma.ts.hbs +4 -18
- package/templates/create/hono/tsconfig.json +0 -1
- package/templates/create/nest/README.md.hbs +12 -6
- package/templates/create/nest/deno.json.hbs +5 -0
- package/templates/create/nest/package.json.hbs +2 -2
- package/templates/create/nest/prisma/schema.prisma.hbs +6 -0
- package/templates/create/nest/prisma/seed.ts.hbs +5 -1
- package/templates/create/nest/prisma.compute.ts.hbs +10 -0
- package/templates/create/nest/src/app.controller.ts.hbs +1 -6
- package/templates/create/nest/src/app.module.ts.hbs +14 -7
- package/templates/create/nest/src/lib/prisma.ts.hbs +4 -17
- package/templates/create/nest/src/main.ts.hbs +6 -2
- package/templates/create/nest/src/prisma.service.ts.hbs +2 -2
- package/templates/create/nest/src/users.controller.ts.hbs +3 -1
- package/templates/create/nest/src/users.service.ts.hbs +3 -1
- package/templates/create/nest/tsconfig.json +0 -1
- package/templates/create/next/README.md.hbs +11 -7
- package/templates/create/next/deno.json.hbs +12 -0
- package/templates/create/next/prisma/schema.prisma.hbs +5 -0
- package/templates/create/next/prisma/seed.ts.hbs +5 -1
- package/templates/create/next/prisma.compute.ts.hbs +9 -0
- package/templates/create/next/src/app/globals.css +122 -0
- package/templates/create/next/src/app/layout.tsx.hbs +2 -2
- package/templates/create/next/src/app/page.tsx.hbs +58 -34
- package/templates/create/next/src/lib/prisma.ts.hbs +4 -18
- package/templates/create/nuxt/README.md.hbs +11 -7
- package/templates/create/nuxt/app/pages/index.vue.hbs +175 -43
- package/templates/create/nuxt/deno.json.hbs +5 -0
- package/templates/create/nuxt/nuxt.config.ts +0 -1
- package/templates/create/nuxt/prisma/schema.prisma.hbs +5 -0
- package/templates/create/nuxt/prisma/seed.ts.hbs +5 -1
- package/templates/create/nuxt/prisma.compute.ts.hbs +9 -0
- package/templates/create/nuxt/server/api/users.get.ts.hbs +6 -0
- package/templates/create/nuxt/server/utils/prisma.ts.hbs +4 -18
- package/templates/create/svelte/README.md.hbs +13 -4
- package/templates/create/svelte/deno.json.hbs +5 -0
- package/templates/create/svelte/package.json.hbs +1 -2
- package/templates/create/svelte/prisma/schema.prisma.hbs +5 -0
- package/templates/create/svelte/prisma/seed.ts.hbs +5 -1
- package/templates/create/svelte/src/lib/server/prisma.ts.hbs +2 -18
- package/templates/create/svelte/src/routes/+layout.svelte +0 -1
- package/templates/create/svelte/src/routes/+page.server.ts.hbs +7 -1
- package/templates/create/svelte/src/routes/+page.svelte.hbs +297 -41
- package/templates/create/svelte/svelte.config.js +13 -0
- package/templates/create/svelte/vite.config.ts +0 -3
- package/templates/create/tanstack-start/README.md.hbs +11 -7
- package/templates/create/tanstack-start/deno.json.hbs +13 -0
- package/templates/create/tanstack-start/prisma/schema.prisma.hbs +5 -0
- package/templates/create/tanstack-start/prisma/seed.ts.hbs +5 -1
- package/templates/create/tanstack-start/prisma.compute.ts.hbs +9 -0
- package/templates/create/tanstack-start/src/lib/prisma.server.ts.hbs +4 -18
- package/templates/create/tanstack-start/src/routes/__root.tsx.hbs +29 -4
- package/templates/create/tanstack-start/src/routes/index.tsx.hbs +76 -35
- package/templates/create/tanstack-start/src/styles.css +146 -0
- package/templates/create/tanstack-start/tsconfig.json +1 -1
- package/templates/create/turborepo/README.md.hbs +9 -7
- package/templates/create/turborepo/apps/api/package.json.hbs +9 -2
- package/templates/create/turborepo/apps/api/src/index.ts.hbs +12 -28
- package/templates/create/turborepo/apps/api/tsconfig.json +0 -1
- package/templates/create/turborepo/deno.json.hbs +5 -0
- package/templates/create/turborepo/package.json.hbs +6 -0
- package/templates/create/turborepo/packages/db/package.json.hbs +5 -4
- package/templates/create/turborepo/packages/db/prisma/schema.prisma.hbs +5 -0
- package/templates/create/turborepo/packages/db/prisma/seed.ts.hbs +5 -1
- package/templates/create/turborepo/packages/db/src/client.ts.hbs +5 -2
- package/templates/create/turborepo/packages/db/tsconfig.json +0 -1
- package/templates/create/turborepo/prisma.compute.ts.hbs +14 -0
- package/templates/create/astro/module.ts.hbs +0 -30
- package/templates/create/astro/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/astro/service.ts.hbs +0 -19
- package/templates/create/elysia/.yarnrc.yml.hbs +0 -3
- package/templates/create/elysia/module.ts.hbs +0 -30
- package/templates/create/elysia/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/elysia/service.ts.hbs +0 -19
- package/templates/create/hono/module.ts.hbs +0 -30
- package/templates/create/hono/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/hono/service.ts.hbs +0 -19
- package/templates/create/nest/module.ts.hbs +0 -30
- package/templates/create/nest/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/nest/src/service.ts.hbs +0 -19
- package/templates/create/next/module.ts.hbs +0 -30
- package/templates/create/next/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/next/service.ts.hbs +0 -19
- package/templates/create/nuxt/module.ts.hbs +0 -30
- package/templates/create/nuxt/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/nuxt/service.ts.hbs +0 -19
- package/templates/create/svelte/module.ts.hbs +0 -30
- package/templates/create/svelte/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/svelte/service.ts.hbs +0 -19
- package/templates/create/svelte/svelte.config.js.hbs +0 -10
- package/templates/create/tanstack-start/module.ts.hbs +0 -30
- package/templates/create/tanstack-start/prisma-composer.config.ts.hbs +0 -8
- package/templates/create/tanstack-start/service.ts.hbs +0 -19
- package/templates/create/turborepo/apps/api/src/service.ts.hbs +0 -19
- package/templates/create/turborepo/module.ts.hbs +0 -30
- package/templates/create/turborepo/prisma-composer.config.ts.hbs +0 -8
- package/templates/shared/setup-composer-postgres.mjs.hbs +0 -179
- package/templates/shared/starter.css +0 -276
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
{{#if (requiresDotenvConfigImport packageManager)}}
|
|
1
2
|
import "dotenv/config";
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import { PrismaClient } from "../generated/prisma/client";
|
|
3
|
+
{{/if}}
|
|
4
|
+
import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
|
|
6
5
|
{{#if (eq provider "postgresql")}}
|
|
7
6
|
import { PrismaPg } from "@prisma/adapter-pg";
|
|
8
7
|
{{/if}}
|
|
@@ -19,20 +18,7 @@ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage pa
|
|
|
19
18
|
import { PrismaMssql } from "@prisma/adapter-mssql";
|
|
20
19
|
{{/if}}
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
{{#if composerPostgres}}
|
|
25
|
-
return service.load().database.url;
|
|
26
|
-
{{else}}
|
|
27
|
-
return service.input().databaseUrl.expose();
|
|
28
|
-
{{/if}}
|
|
29
|
-
} catch {
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const rawDatabaseUrl = getComposerDatabaseUrl() ?? process.env.DATABASE_URL;
|
|
35
|
-
|
|
21
|
+
const rawDatabaseUrl = process.env.DATABASE_URL;
|
|
36
22
|
{{#if (eq provider "sqlite")}}
|
|
37
23
|
const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
|
|
38
24
|
{{else}}
|
|
@@ -8,7 +8,9 @@ Generated by `create-prisma` with the SvelteKit template.
|
|
|
8
8
|
- `{{runScriptCommand packageManager "build"}}` - build for production
|
|
9
9
|
- `{{runScriptCommand packageManager "preview"}}` - preview the production build
|
|
10
10
|
- `{{runScriptCommand packageManager "check"}}` - run SvelteKit sync and type checks
|
|
11
|
-
|
|
11
|
+
{{#if compute}}
|
|
12
|
+
- `{{runScriptCommand packageManager "compute:deploy"}}` - redeploy to Prisma Compute with environment variables from `.env`
|
|
13
|
+
{{/if}}
|
|
12
14
|
|
|
13
15
|
## Prisma
|
|
14
16
|
|
|
@@ -26,11 +28,18 @@ Database helper scripts are added to `package.json`:
|
|
|
26
28
|
- `db:push`
|
|
27
29
|
- `db:migrate`
|
|
28
30
|
- `db:seed`
|
|
31
|
+
{{#if (eq schemaPreset "basic")}}
|
|
29
32
|
|
|
30
33
|
The starter page loads users in `+page.server.ts`, renders them in `+page.svelte`, and `prisma/seed.ts` inserts starter users.
|
|
34
|
+
{{else}}
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
The starter page keeps the official SvelteKit minimal structure and points you to `prisma/schema.prisma` for your first model.
|
|
37
|
+
{{/if}}
|
|
38
|
+
{{#if compute}}
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
## Prisma Compute
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
This project includes a Prisma Compute deploy script. Deploys load environment variables from `.env`; if setup created a Prisma Postgres database, its `DATABASE_URL` is already written there.
|
|
43
|
+
|
|
44
|
+
After local changes, run `{{runScriptCommand packageManager "compute:deploy"}}` to redeploy.
|
|
45
|
+
{{/if}}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"dev": "vite dev",
|
|
11
11
|
"build": "vite build",
|
|
12
|
-
"start": "node build/index.js",
|
|
13
12
|
"preview": "vite preview",
|
|
14
13
|
"prepare": "svelte-kit sync || echo ''",
|
|
15
14
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
@@ -17,7 +16,7 @@
|
|
|
17
16
|
"db:generate": "svelte-kit sync && {{prismaCommand packageManager "generate"}}"
|
|
18
17
|
},
|
|
19
18
|
"devDependencies": {
|
|
20
|
-
"@sveltejs/adapter-
|
|
19
|
+
"@sveltejs/adapter-auto": "^7.0.1",
|
|
21
20
|
"@sveltejs/kit": "^2.67.0",
|
|
22
21
|
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
|
23
22
|
"@types/node": "^26.0.0",
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
generator client {
|
|
2
2
|
provider = "prisma-client"
|
|
3
3
|
output = "../src/generated/prisma"
|
|
4
|
+
{{#if (eq packageManager "deno")}}
|
|
5
|
+
runtime = "deno"
|
|
6
|
+
{{/if}}
|
|
4
7
|
}
|
|
5
8
|
|
|
6
9
|
datasource db {
|
|
7
10
|
provider = "{{provider}}"
|
|
8
11
|
}
|
|
12
|
+
{{#if (eq schemaPreset "basic")}}
|
|
9
13
|
|
|
10
14
|
model User {
|
|
11
15
|
id String @id @default(cuid())
|
|
@@ -14,3 +18,4 @@ model User {
|
|
|
14
18
|
createdAt DateTime @default(now())
|
|
15
19
|
updatedAt DateTime @updatedAt
|
|
16
20
|
}
|
|
21
|
+
{{/if}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import prisma from "../src/lib/server/prisma";
|
|
1
|
+
import prisma from "../src/lib/server/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
|
|
2
2
|
|
|
3
3
|
async function main() {
|
|
4
|
+
{{#if (eq schemaPreset "basic")}}
|
|
4
5
|
const users = await Promise.all([
|
|
5
6
|
prisma.user.upsert({
|
|
6
7
|
where: { email: "alice@prisma.io" },
|
|
@@ -21,6 +22,9 @@ async function main() {
|
|
|
21
22
|
]);
|
|
22
23
|
|
|
23
24
|
console.log(`Seeded ${users.length} users.`);
|
|
25
|
+
{{else}}
|
|
26
|
+
console.log("No seed data defined for the empty schema preset.");
|
|
27
|
+
{{/if}}
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
main()
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import service from "../../../service";
|
|
3
|
-
|
|
4
|
-
import { PrismaClient } from "../../generated/prisma/client";
|
|
1
|
+
import { PrismaClient } from "../../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
|
|
5
2
|
{{#if (eq provider "postgresql")}}
|
|
6
3
|
import { PrismaPg } from "@prisma/adapter-pg";
|
|
7
4
|
{{/if}}
|
|
@@ -18,20 +15,7 @@ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage pa
|
|
|
18
15
|
import { PrismaMssql } from "@prisma/adapter-mssql";
|
|
19
16
|
{{/if}}
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
{{#if composerPostgres}}
|
|
24
|
-
return service.load().database.url;
|
|
25
|
-
{{else}}
|
|
26
|
-
return service.input().databaseUrl.expose();
|
|
27
|
-
{{/if}}
|
|
28
|
-
} catch {
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const rawDatabaseUrl = getComposerDatabaseUrl() ?? process.env.DATABASE_URL;
|
|
34
|
-
|
|
18
|
+
const rawDatabaseUrl = process.env.DATABASE_URL;
|
|
35
19
|
{{#if (eq provider "sqlite")}}
|
|
36
20
|
const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
|
|
37
21
|
{{else}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PageServerLoad } from "./$types";
|
|
2
|
-
|
|
2
|
+
{{#if (eq schemaPreset "basic")}}
|
|
3
3
|
import prisma from "$lib/server/prisma";
|
|
4
4
|
|
|
5
5
|
export const load: PageServerLoad = async () => {
|
|
@@ -20,3 +20,9 @@ export const load: PageServerLoad = async () => {
|
|
|
20
20
|
|
|
21
21
|
return { users };
|
|
22
22
|
};
|
|
23
|
+
{{else}}
|
|
24
|
+
|
|
25
|
+
export const load: PageServerLoad = async () => {
|
|
26
|
+
return {};
|
|
27
|
+
};
|
|
28
|
+
{{/if}}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
{{#if (eq schemaPreset "basic")}}
|
|
1
2
|
<script lang="ts">
|
|
2
3
|
import type { PageProps } from './$types';
|
|
3
4
|
|
|
@@ -5,55 +6,46 @@
|
|
|
5
6
|
</script>
|
|
6
7
|
|
|
7
8
|
<svelte:head>
|
|
8
|
-
<title>
|
|
9
|
-
<meta name="description" content="A minimal Prisma starter generated by create-prisma." />
|
|
9
|
+
<title>create-prisma + sveltekit</title>
|
|
10
10
|
</svelte:head>
|
|
11
11
|
|
|
12
12
|
<script lang="ts" module>
|
|
13
13
|
const formatter = new Intl.DateTimeFormat('en', {
|
|
14
|
-
dateStyle: 'medium'
|
|
14
|
+
dateStyle: 'medium',
|
|
15
|
+
timeStyle: 'short'
|
|
15
16
|
});
|
|
16
17
|
</script>
|
|
17
18
|
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
<span class="product-name">{{projectName}}</span>
|
|
23
|
-
<span class="framework">SvelteKit</span>
|
|
24
|
-
</div>
|
|
25
|
-
<h1>Start building with Prisma.</h1>
|
|
19
|
+
<section class="shell">
|
|
20
|
+
<div class="hero">
|
|
21
|
+
<p class="eyebrow">SvelteKit + Prisma 7</p>
|
|
22
|
+
<h1>Users from your database, loaded on the server.</h1>
|
|
26
23
|
<p class="lede">
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
This page reads from <code>+page.server.ts</code> using the Prisma instance in
|
|
25
|
+
<code>src/lib/server/prisma.ts</code>.
|
|
29
26
|
</p>
|
|
30
|
-
</
|
|
27
|
+
</div>
|
|
31
28
|
|
|
32
|
-
<
|
|
29
|
+
<div class="panel">
|
|
33
30
|
<div class="panel-header">
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
<p>Latest records</p>
|
|
37
|
-
</div>
|
|
38
|
-
<span class="count">{data.users?.length ?? 0}</span>
|
|
31
|
+
<h2>Seeded users</h2>
|
|
32
|
+
<span>{data.users?.length ?? 0} total</span>
|
|
39
33
|
</div>
|
|
40
34
|
|
|
41
35
|
{#if !data.users}
|
|
42
|
-
<p class="empty
|
|
43
|
-
|
|
36
|
+
<p class="empty">
|
|
37
|
+
Could not query users yet. Run <code>db:migrate</code>, then <code>db:seed</code>, then
|
|
38
|
+
refresh.
|
|
44
39
|
</p>
|
|
45
40
|
{:else if data.users.length === 0}
|
|
46
|
-
<p class="empty
|
|
41
|
+
<p class="empty">No users yet. Run <code>db:seed</code> after your first migration.</p>
|
|
47
42
|
{:else}
|
|
48
|
-
<ul class="
|
|
49
|
-
{#each data.users as user
|
|
50
|
-
<li
|
|
51
|
-
<
|
|
52
|
-
{
|
|
53
|
-
|
|
54
|
-
<div class="user-copy">
|
|
55
|
-
<p class="user-name">{user.name ?? 'Unnamed user'}</p>
|
|
56
|
-
<p class="user-email">{user.email}</p>
|
|
43
|
+
<ul class="users">
|
|
44
|
+
{#each data.users as user}
|
|
45
|
+
<li>
|
|
46
|
+
<div>
|
|
47
|
+
<strong>{user.name ?? 'Unnamed user'}</strong>
|
|
48
|
+
<p>{user.email}</p>
|
|
57
49
|
</div>
|
|
58
50
|
<time datetime={new Date(user.createdAt).toISOString()}>
|
|
59
51
|
{formatter.format(new Date(user.createdAt))}
|
|
@@ -62,12 +54,276 @@
|
|
|
62
54
|
{/each}
|
|
63
55
|
</ul>
|
|
64
56
|
{/if}
|
|
65
|
-
</
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
57
|
+
</div>
|
|
58
|
+
</section>
|
|
59
|
+
|
|
60
|
+
<style>
|
|
61
|
+
:global(body) {
|
|
62
|
+
margin: 0;
|
|
63
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
|
64
|
+
background: #fff;
|
|
65
|
+
color: #111;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.shell {
|
|
69
|
+
max-width: 40rem;
|
|
70
|
+
margin: 0 auto;
|
|
71
|
+
padding: 3rem 1.5rem;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.hero {
|
|
75
|
+
margin-bottom: 1.5rem;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.eyebrow {
|
|
79
|
+
margin: 0 0 0.5rem;
|
|
80
|
+
color: #666;
|
|
81
|
+
font-size: 0.75rem;
|
|
82
|
+
font-weight: 600;
|
|
83
|
+
letter-spacing: 0.06em;
|
|
84
|
+
text-transform: uppercase;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
h1 {
|
|
88
|
+
margin: 0;
|
|
89
|
+
font-size: 1.25rem;
|
|
90
|
+
font-weight: 600;
|
|
91
|
+
line-height: 1.4;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.lede {
|
|
95
|
+
margin: 0.5rem 0 0;
|
|
96
|
+
color: #666;
|
|
97
|
+
font-size: 0.875rem;
|
|
98
|
+
line-height: 1.6;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.panel {
|
|
102
|
+
border: 1px solid #e5e5e5;
|
|
103
|
+
border-radius: 0.5rem;
|
|
104
|
+
padding: 1rem;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.panel-header {
|
|
108
|
+
display: flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
justify-content: space-between;
|
|
111
|
+
gap: 1rem;
|
|
112
|
+
margin-bottom: 0.75rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
h2 {
|
|
116
|
+
margin: 0;
|
|
117
|
+
font-size: 0.875rem;
|
|
118
|
+
font-weight: 600;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.panel-header span,
|
|
122
|
+
.empty,
|
|
123
|
+
time {
|
|
124
|
+
color: #888;
|
|
125
|
+
font-size: 0.8rem;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.panel p {
|
|
129
|
+
color: #666;
|
|
130
|
+
font-size: 0.8rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.users {
|
|
134
|
+
list-style: none;
|
|
135
|
+
margin: 0;
|
|
136
|
+
padding: 0;
|
|
137
|
+
display: grid;
|
|
138
|
+
gap: 0.5rem;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.users li {
|
|
142
|
+
display: flex;
|
|
143
|
+
align-items: center;
|
|
144
|
+
justify-content: space-between;
|
|
145
|
+
gap: 1rem;
|
|
146
|
+
padding: 0.625rem 0.75rem;
|
|
147
|
+
border: 1px solid #eee;
|
|
148
|
+
border-radius: 0.375rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.users p {
|
|
152
|
+
margin: 0.125rem 0 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
time {
|
|
156
|
+
font-size: 0.75rem;
|
|
157
|
+
white-space: nowrap;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
code {
|
|
161
|
+
padding: 0.125rem 0.25rem;
|
|
162
|
+
border-radius: 0.25rem;
|
|
163
|
+
background: #f5f5f5;
|
|
164
|
+
font-family: SFMono-Regular, Consolas, monospace;
|
|
165
|
+
font-size: 0.875em;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@media (max-width: 640px) {
|
|
169
|
+
.users li,
|
|
170
|
+
.panel-header {
|
|
171
|
+
flex-direction: column;
|
|
172
|
+
align-items: flex-start;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
</style>
|
|
176
|
+
{{else}}
|
|
177
|
+
<svelte:head>
|
|
178
|
+
<title>create-prisma + sveltekit</title>
|
|
179
|
+
</svelte:head>
|
|
180
|
+
|
|
181
|
+
<section class="shell">
|
|
182
|
+
<div class="hero">
|
|
183
|
+
<p class="eyebrow">SvelteKit + Prisma 7</p>
|
|
184
|
+
<h1>Your SvelteKit app is ready.</h1>
|
|
185
|
+
<p class="lede">
|
|
186
|
+
Edit <code>prisma/schema.prisma</code>, run <code>db:migrate</code>, then load your data from
|
|
187
|
+
<code>+page.server.ts</code> with the Prisma instance in <code>src/lib/server/prisma.ts</code>.
|
|
188
|
+
</p>
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<div class="panel">
|
|
192
|
+
<div class="panel-header">
|
|
193
|
+
<h2>What's included</h2>
|
|
194
|
+
<span>Starter kit</span>
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<ul class="users">
|
|
198
|
+
<li>
|
|
199
|
+
<div>
|
|
200
|
+
<strong>Prisma client</strong>
|
|
201
|
+
<p>Use the server-only instance from <code>src/lib/server/prisma.ts</code>.</p>
|
|
202
|
+
</div>
|
|
203
|
+
</li>
|
|
204
|
+
<li>
|
|
205
|
+
<div>
|
|
206
|
+
<strong>Seed script</strong>
|
|
207
|
+
<p>Run <code>db:seed</code> after your first migration.</p>
|
|
208
|
+
</div>
|
|
209
|
+
</li>
|
|
210
|
+
<li>
|
|
211
|
+
<div>
|
|
212
|
+
<strong>Generated client output</strong>
|
|
213
|
+
<p>Prisma Client is generated into <code>src/generated/prisma</code>.</p>
|
|
214
|
+
</div>
|
|
215
|
+
</li>
|
|
216
|
+
</ul>
|
|
217
|
+
</div>
|
|
218
|
+
</section>
|
|
219
|
+
|
|
220
|
+
<style>
|
|
221
|
+
:global(body) {
|
|
222
|
+
margin: 0;
|
|
223
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
|
224
|
+
background: #fff;
|
|
225
|
+
color: #111;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.shell {
|
|
229
|
+
max-width: 40rem;
|
|
230
|
+
margin: 0 auto;
|
|
231
|
+
padding: 3rem 1.5rem;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.hero {
|
|
235
|
+
margin-bottom: 1.5rem;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.eyebrow {
|
|
239
|
+
margin: 0 0 0.5rem;
|
|
240
|
+
color: #666;
|
|
241
|
+
font-size: 0.75rem;
|
|
242
|
+
font-weight: 600;
|
|
243
|
+
letter-spacing: 0.06em;
|
|
244
|
+
text-transform: uppercase;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
h1 {
|
|
248
|
+
margin: 0;
|
|
249
|
+
font-size: 1.25rem;
|
|
250
|
+
font-weight: 600;
|
|
251
|
+
line-height: 1.4;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.lede {
|
|
255
|
+
margin: 0.5rem 0 0;
|
|
256
|
+
color: #666;
|
|
257
|
+
font-size: 0.875rem;
|
|
258
|
+
line-height: 1.6;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.panel {
|
|
262
|
+
border: 1px solid #e5e5e5;
|
|
263
|
+
border-radius: 0.5rem;
|
|
264
|
+
padding: 1rem;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.panel-header {
|
|
268
|
+
display: flex;
|
|
269
|
+
align-items: center;
|
|
270
|
+
justify-content: space-between;
|
|
271
|
+
gap: 1rem;
|
|
272
|
+
margin-bottom: 0.75rem;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
h2 {
|
|
276
|
+
margin: 0;
|
|
277
|
+
font-size: 0.875rem;
|
|
278
|
+
font-weight: 600;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.panel-header span {
|
|
282
|
+
color: #888;
|
|
283
|
+
font-size: 0.8rem;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.panel p {
|
|
287
|
+
color: #666;
|
|
288
|
+
font-size: 0.8rem;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.users {
|
|
292
|
+
list-style: none;
|
|
293
|
+
margin: 0;
|
|
294
|
+
padding: 0;
|
|
295
|
+
display: grid;
|
|
296
|
+
gap: 0.5rem;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.users li {
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
justify-content: space-between;
|
|
303
|
+
gap: 1rem;
|
|
304
|
+
padding: 0.625rem 0.75rem;
|
|
305
|
+
border: 1px solid #eee;
|
|
306
|
+
border-radius: 0.375rem;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.users p {
|
|
310
|
+
margin: 0.125rem 0 0;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
code {
|
|
314
|
+
padding: 0.125rem 0.25rem;
|
|
315
|
+
border-radius: 0.25rem;
|
|
316
|
+
background: #f5f5f5;
|
|
317
|
+
font-family: SFMono-Regular, Consolas, monospace;
|
|
318
|
+
font-size: 0.875em;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@media (max-width: 640px) {
|
|
322
|
+
.users li,
|
|
323
|
+
.panel-header {
|
|
324
|
+
flex-direction: column;
|
|
325
|
+
align-items: flex-start;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
</style>
|
|
329
|
+
{{/if}}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import adapter from "@sveltejs/adapter-auto";
|
|
2
|
+
|
|
3
|
+
/** @type {import('@sveltejs/kit').Config} */
|
|
4
|
+
const config = {
|
|
5
|
+
kit: {
|
|
6
|
+
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
|
7
|
+
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
|
8
|
+
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
|
|
9
|
+
adapter: adapter(),
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default config;
|
|
@@ -8,7 +8,9 @@ Generated by `create-prisma` with the TanStack Start template.
|
|
|
8
8
|
- `{{runScriptCommand packageManager "build"}}` - build for production
|
|
9
9
|
- `{{runScriptCommand packageManager "preview"}}` - preview the production build
|
|
10
10
|
- `{{runScriptCommand packageManager "typecheck"}}` - run TypeScript checks
|
|
11
|
-
|
|
11
|
+
{{#if compute}}
|
|
12
|
+
- `{{runScriptCommand packageManager "compute:deploy"}}` - redeploy to Prisma Compute with environment variables from `.env`
|
|
13
|
+
{{/if}}
|
|
12
14
|
|
|
13
15
|
## Prisma
|
|
14
16
|
|
|
@@ -18,9 +20,7 @@ Prisma setup is scaffolded automatically in:
|
|
|
18
20
|
- `prisma/seed.ts`
|
|
19
21
|
- `src/lib/prisma.server.ts`
|
|
20
22
|
- `prisma.config.ts`
|
|
21
|
-
- `
|
|
22
|
-
- `service.ts`
|
|
23
|
-
- `prisma-composer.config.ts`
|
|
23
|
+
- `prisma.compute.ts`
|
|
24
24
|
- `src/generated/prisma`
|
|
25
25
|
|
|
26
26
|
Database helper scripts are added to `package.json`:
|
|
@@ -29,11 +29,15 @@ Database helper scripts are added to `package.json`:
|
|
|
29
29
|
- `db:push`
|
|
30
30
|
- `db:migrate`
|
|
31
31
|
- `db:seed`
|
|
32
|
+
{{#if (eq schemaPreset "basic")}}
|
|
32
33
|
|
|
33
34
|
The home route uses a TanStack Start server function to load users with the Prisma client from `src/lib/prisma.server.ts`, so you can verify a real database query without adding an API route first.
|
|
35
|
+
{{/if}}
|
|
36
|
+
{{#if compute}}
|
|
34
37
|
|
|
35
|
-
## Prisma
|
|
38
|
+
## Prisma Compute
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
This project includes a Prisma Compute deploy script and deploy defaults in `prisma.compute.ts`. Deploys load environment variables from `.env`; if setup created a Prisma Postgres database, its `DATABASE_URL` is already written there.
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
After local changes, run `{{runScriptCommand packageManager "compute:deploy"}}` to redeploy.
|
|
43
|
+
{{/if}}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
generator client {
|
|
2
2
|
provider = "prisma-client"
|
|
3
3
|
output = "../src/generated/prisma"
|
|
4
|
+
{{#if (eq packageManager "deno")}}
|
|
5
|
+
runtime = "deno"
|
|
6
|
+
{{/if}}
|
|
4
7
|
}
|
|
5
8
|
|
|
6
9
|
datasource db {
|
|
7
10
|
provider = "{{provider}}"
|
|
8
11
|
}
|
|
12
|
+
{{#if (eq schemaPreset "basic")}}
|
|
9
13
|
|
|
10
14
|
model User {
|
|
11
15
|
id String @id @default(cuid())
|
|
@@ -14,3 +18,4 @@ model User {
|
|
|
14
18
|
createdAt DateTime @default(now())
|
|
15
19
|
updatedAt DateTime @updatedAt
|
|
16
20
|
}
|
|
21
|
+
{{/if}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import prisma from "../src/lib/prisma.server";
|
|
1
|
+
import prisma from "../src/lib/prisma.server{{#if (eq packageManager "deno")}}.ts{{/if}}";
|
|
2
2
|
|
|
3
3
|
async function main() {
|
|
4
|
+
{{#if (eq schemaPreset "basic")}}
|
|
4
5
|
const users = await Promise.all([
|
|
5
6
|
prisma.user.upsert({
|
|
6
7
|
where: { email: "alice@prisma.io" },
|
|
@@ -21,6 +22,9 @@ async function main() {
|
|
|
21
22
|
]);
|
|
22
23
|
|
|
23
24
|
console.log(`Seeded ${users.length} users.`);
|
|
25
|
+
{{else}}
|
|
26
|
+
console.log("No seed data defined for the empty schema preset.");
|
|
27
|
+
{{/if}}
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
main()
|