create-rudder-app 0.7.0 → 0.8.0
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/dist/templates/demos/polymorphic.d.ts +6 -4
- package/dist/templates/demos/polymorphic.d.ts.map +1 -1
- package/dist/templates/demos/polymorphic.js +326 -33
- package/dist/templates/demos/polymorphic.js.map +1 -1
- package/dist/templates/demos/registry.js +1 -1
- package/dist/templates/demos/registry.js.map +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +2 -1
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
export declare function postModelTs(): string;
|
|
2
2
|
export declare function videoModelTs(): string;
|
|
3
3
|
export declare function commentModelTs(): string;
|
|
4
|
+
export declare function tagModelTs(): string;
|
|
4
5
|
export declare function polymorphicPrismaBlock(): string;
|
|
5
6
|
export declare function demosPolymorphicView(): string;
|
|
6
7
|
/**
|
|
7
8
|
* Inlined into routes/web.ts demos block. Loads parents + hydrates each parent's
|
|
8
|
-
* comments via the
|
|
9
|
-
* serialize Model instances across the SSR boundary).
|
|
9
|
+
* comments + tags via the polymorphic relations. Returns plain objects (Vike
|
|
10
|
+
* refuses to serialize Model instances across the SSR boundary).
|
|
10
11
|
*/
|
|
11
12
|
export declare function demosPolymorphicWebBlock(): string;
|
|
12
13
|
/**
|
|
13
|
-
* Inlined into routes/api.ts demos block.
|
|
14
|
-
* create-video, comment-on-post, comment-on-video,
|
|
14
|
+
* Inlined into routes/api.ts demos block. Endpoints: state, create-post,
|
|
15
|
+
* create-video, comment-on-post, comment-on-video, morphTo resolution,
|
|
16
|
+
* create-tag, attach/detach tag (post + video), morphedByMany inverse.
|
|
15
17
|
*/
|
|
16
18
|
export declare function demosPolymorphicApiBlock(): string;
|
|
17
19
|
//# sourceMappingURL=polymorphic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polymorphic.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"polymorphic.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"AASA,wBAAgB,WAAW,IAAI,MAAM,CAmBpC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAmBrC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAoBvC;AAED,wBAAgB,UAAU,IAAI,MAAM,CA4BnC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CA2C/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAoV7C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAsBjD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAyJjD"}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
// Polymorphic relations demo —
|
|
1
|
+
// Polymorphic relations demo — every polymorphic relation type
|
|
2
|
+
// (morphMany / morphTo / morphToMany / morphedByMany) via @rudderjs/orm.
|
|
2
3
|
//
|
|
3
|
-
// Scaffolds
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// API surface (state
|
|
4
|
+
// Scaffolds four Models (Post / Video / Comment / Tag), the React view, the
|
|
5
|
+
// Prisma block (Comment with camelCase commentableId/commentableType + Tag
|
|
6
|
+
// with the shared `taggable` pivot), the controller view, and a self-contained
|
|
7
|
+
// API surface (state, create, comment, morphTo resolution, tag attach/detach,
|
|
8
|
+
// and morphedByMany inverse fan-out).
|
|
7
9
|
export function postModelTs() {
|
|
8
10
|
return `import { Model } from '@rudderjs/orm'
|
|
9
11
|
import { Comment } from './Comment.js'
|
|
12
|
+
import { Tag } from './Tag.js'
|
|
10
13
|
|
|
11
14
|
export class Post extends Model {
|
|
12
15
|
static table = 'post'
|
|
13
16
|
static fillable = ['title']
|
|
14
17
|
|
|
15
18
|
static override relations = {
|
|
16
|
-
comments: { type: 'morphMany'
|
|
19
|
+
comments: { type: 'morphMany' as const, model: () => Comment, morphName: 'commentable' },
|
|
20
|
+
tags: { type: 'morphToMany' as const, model: () => Tag, pivotTable: 'taggable', morphName: 'taggable' },
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
id!: number
|
|
@@ -25,13 +29,15 @@ export class Post extends Model {
|
|
|
25
29
|
export function videoModelTs() {
|
|
26
30
|
return `import { Model } from '@rudderjs/orm'
|
|
27
31
|
import { Comment } from './Comment.js'
|
|
32
|
+
import { Tag } from './Tag.js'
|
|
28
33
|
|
|
29
34
|
export class Video extends Model {
|
|
30
35
|
static table = 'video'
|
|
31
36
|
static fillable = ['url']
|
|
32
37
|
|
|
33
38
|
static override relations = {
|
|
34
|
-
comments: { type: 'morphMany'
|
|
39
|
+
comments: { type: 'morphMany' as const, model: () => Comment, morphName: 'commentable' },
|
|
40
|
+
tags: { type: 'morphToMany' as const, model: () => Tag, pivotTable: 'taggable', morphName: 'taggable' },
|
|
35
41
|
}
|
|
36
42
|
|
|
37
43
|
id!: number
|
|
@@ -61,9 +67,39 @@ export class Comment extends Model {
|
|
|
61
67
|
}
|
|
62
68
|
`;
|
|
63
69
|
}
|
|
70
|
+
export function tagModelTs() {
|
|
71
|
+
return `import { Model } from '@rudderjs/orm'
|
|
72
|
+
import { Post } from './Post.js'
|
|
73
|
+
import { Video } from './Video.js'
|
|
74
|
+
|
|
75
|
+
export class Tag extends Model {
|
|
76
|
+
static table = 'tag'
|
|
77
|
+
static fillable = ['name']
|
|
78
|
+
|
|
79
|
+
static override relations = {
|
|
80
|
+
posts: {
|
|
81
|
+
type: 'morphedByMany' as const,
|
|
82
|
+
model: () => Post,
|
|
83
|
+
pivotTable: 'taggable',
|
|
84
|
+
morphName: 'taggable',
|
|
85
|
+
},
|
|
86
|
+
videos: {
|
|
87
|
+
type: 'morphedByMany' as const,
|
|
88
|
+
model: () => Video,
|
|
89
|
+
pivotTable: 'taggable',
|
|
90
|
+
morphName: 'taggable',
|
|
91
|
+
},
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
id!: number
|
|
95
|
+
name!: string
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
64
99
|
export function polymorphicPrismaBlock() {
|
|
65
|
-
return `// module: Polymorphic demo (Post / Video / Comment)
|
|
66
|
-
// commentableId +
|
|
100
|
+
return `// module: Polymorphic demo (Post / Video / Comment / Tag + Taggable pivot)
|
|
101
|
+
// commentableId/commentableType + taggableId/taggableType follow @rudderjs/orm's
|
|
102
|
+
// camelCase convention.
|
|
67
103
|
model Post {
|
|
68
104
|
id Int @id @default(autoincrement())
|
|
69
105
|
title String
|
|
@@ -85,6 +121,23 @@ model Comment {
|
|
|
85
121
|
|
|
86
122
|
@@index([commentableType, commentableId])
|
|
87
123
|
}
|
|
124
|
+
|
|
125
|
+
// Polymorphic many-to-many. One Tag table shared by both Post and Video
|
|
126
|
+
// through a single Taggable pivot. The pivot carries tagId (strong side) +
|
|
127
|
+
// taggableId/taggableType (polymorphic side).
|
|
128
|
+
model Tag {
|
|
129
|
+
id Int @id @default(autoincrement())
|
|
130
|
+
name String @unique
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
model Taggable {
|
|
134
|
+
tagId Int
|
|
135
|
+
taggableId Int
|
|
136
|
+
taggableType String
|
|
137
|
+
|
|
138
|
+
@@id([tagId, taggableId, taggableType])
|
|
139
|
+
@@index([taggableId, taggableType])
|
|
140
|
+
}
|
|
88
141
|
`;
|
|
89
142
|
}
|
|
90
143
|
export function demosPolymorphicView() {
|
|
@@ -99,16 +152,23 @@ interface CommentDto {
|
|
|
99
152
|
createdAt: string
|
|
100
153
|
}
|
|
101
154
|
|
|
155
|
+
interface TagDto {
|
|
156
|
+
id: number
|
|
157
|
+
name: string
|
|
158
|
+
}
|
|
159
|
+
|
|
102
160
|
interface PostDto {
|
|
103
161
|
id: number
|
|
104
162
|
title: string
|
|
105
163
|
comments: CommentDto[]
|
|
164
|
+
tags: TagDto[]
|
|
106
165
|
}
|
|
107
166
|
|
|
108
167
|
interface VideoDto {
|
|
109
168
|
id: number
|
|
110
169
|
url: string
|
|
111
170
|
comments: CommentDto[]
|
|
171
|
+
tags: TagDto[]
|
|
112
172
|
}
|
|
113
173
|
|
|
114
174
|
interface ResolvedParent {
|
|
@@ -117,22 +177,31 @@ interface ResolvedParent {
|
|
|
117
177
|
title: string
|
|
118
178
|
}
|
|
119
179
|
|
|
180
|
+
interface InverseFanOut {
|
|
181
|
+
posts: Array<{ id: number; title: string }>
|
|
182
|
+
videos: Array<{ id: number; url: string }>
|
|
183
|
+
}
|
|
184
|
+
|
|
120
185
|
interface PolymorphicDemoProps {
|
|
121
186
|
posts: PostDto[]
|
|
122
187
|
videos: VideoDto[]
|
|
188
|
+
tags: TagDto[]
|
|
123
189
|
}
|
|
124
190
|
|
|
125
|
-
export default function PolymorphicDemo(
|
|
126
|
-
const [posts, setPosts] = useState<PostDto[]>(
|
|
127
|
-
const [videos, setVideos] = useState<VideoDto[]>(
|
|
191
|
+
export default function PolymorphicDemo(props: PolymorphicDemoProps) {
|
|
192
|
+
const [posts, setPosts] = useState<PostDto[]>(props.posts)
|
|
193
|
+
const [videos, setVideos] = useState<VideoDto[]>(props.videos)
|
|
194
|
+
const [tags, setTags] = useState<TagDto[]>(props.tags)
|
|
128
195
|
const [resolved, setResolved] = useState<ResolvedParent | null>(null)
|
|
196
|
+
const [inverse, setInverse] = useState<{ tag: TagDto; data: InverseFanOut } | null>(null)
|
|
129
197
|
const [loading, setLoading] = useState(false)
|
|
130
198
|
|
|
131
199
|
async function refresh() {
|
|
132
200
|
const res = await fetch('/api/polymorphic/state')
|
|
133
|
-
const json = await res.json() as { posts: PostDto[]; videos: VideoDto[] }
|
|
201
|
+
const json = await res.json() as { posts: PostDto[]; videos: VideoDto[]; tags: TagDto[] }
|
|
134
202
|
setPosts(json.posts)
|
|
135
203
|
setVideos(json.videos)
|
|
204
|
+
setTags(json.tags)
|
|
136
205
|
}
|
|
137
206
|
|
|
138
207
|
async function addPost() {
|
|
@@ -185,6 +254,53 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
185
254
|
} finally { setLoading(false) }
|
|
186
255
|
}
|
|
187
256
|
|
|
257
|
+
async function addTag() {
|
|
258
|
+
const name = prompt('Tag name?')
|
|
259
|
+
if (!name) return
|
|
260
|
+
setLoading(true)
|
|
261
|
+
try {
|
|
262
|
+
await fetch('/api/polymorphic/tags', {
|
|
263
|
+
method: 'POST',
|
|
264
|
+
headers: { 'Content-Type': 'application/json' },
|
|
265
|
+
body: JSON.stringify({ name }),
|
|
266
|
+
})
|
|
267
|
+
await refresh()
|
|
268
|
+
} finally { setLoading(false) }
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
async function attachTag(type: 'post' | 'video', parentId: number) {
|
|
272
|
+
if (tags.length === 0) { alert('Create a tag first.'); return }
|
|
273
|
+
const tagName = prompt(\`Attach which tag? (\${tags.map(t => t.name).join(', ')})\`)
|
|
274
|
+
if (!tagName) return
|
|
275
|
+
const tag = tags.find(t => t.name === tagName)
|
|
276
|
+
if (!tag) { alert('No tag with that name.'); return }
|
|
277
|
+
setLoading(true)
|
|
278
|
+
try {
|
|
279
|
+
await fetch(\`/api/polymorphic/\${type}s/\${parentId}/tags\`, {
|
|
280
|
+
method: 'POST',
|
|
281
|
+
headers: { 'Content-Type': 'application/json' },
|
|
282
|
+
body: JSON.stringify({ tagId: tag.id }),
|
|
283
|
+
})
|
|
284
|
+
await refresh()
|
|
285
|
+
} finally { setLoading(false) }
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
async function detachTag(type: 'post' | 'video', parentId: number, tagId: number) {
|
|
289
|
+
setLoading(true)
|
|
290
|
+
try {
|
|
291
|
+
await fetch(\`/api/polymorphic/\${type}s/\${parentId}/tags/\${tagId}\`, { method: 'DELETE' })
|
|
292
|
+
await refresh()
|
|
293
|
+
} finally { setLoading(false) }
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
async function resolveInverse(tag: TagDto) {
|
|
297
|
+
setLoading(true)
|
|
298
|
+
try {
|
|
299
|
+
const res = await fetch(\`/api/polymorphic/tags/\${tag.id}/items\`)
|
|
300
|
+
setInverse({ tag, data: await res.json() as InverseFanOut })
|
|
301
|
+
} finally { setLoading(false) }
|
|
302
|
+
}
|
|
303
|
+
|
|
188
304
|
return (
|
|
189
305
|
<div className="page">
|
|
190
306
|
<nav className="page-nav">
|
|
@@ -201,10 +317,10 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
201
317
|
<section className="hero">
|
|
202
318
|
<h1 className="hero-title">Polymorphic relations</h1>
|
|
203
319
|
<p className="hero-lead">
|
|
204
|
-
One <code className="inline-code">Comment</code> table belonging to either a <code className="inline-code">Post</code> or a <code className="inline-code">Video</code> via <code className="inline-code">commentableId</code> + <code className="inline-code">commentableType</code
|
|
320
|
+
One <code className="inline-code">Comment</code> table belonging to either a <code className="inline-code">Post</code> or a <code className="inline-code">Video</code> via <code className="inline-code">commentableId</code> + <code className="inline-code">commentableType</code>. One <code className="inline-code">Tag</code> table shared by both Posts and Videos through a single <code className="inline-code">taggable</code> pivot — <code className="inline-code">morphToMany</code> on the owning side, <code className="inline-code">morphedByMany</code> on the inverse.
|
|
205
321
|
</p>
|
|
206
322
|
<p className="hero-meta">
|
|
207
|
-
Models: <code className="inline-code">Post.morphMany('comments')</code>, <code className="inline-code">Video.morphMany('comments')</code>, <code className="inline-code">Comment.morphTo('commentable', [Post, Video])</code>. Writes use <code className="inline-code">Model.morph(
|
|
323
|
+
Models: <code className="inline-code">Post.morphMany('comments')</code> + <code className="inline-code">Post.morphToMany('tags')</code>, <code className="inline-code">Video.morphMany('comments')</code> + <code className="inline-code">Video.morphToMany('tags')</code>, <code className="inline-code">Comment.morphTo('commentable', [Post, Video])</code>, <code className="inline-code">Tag.morphedByMany('posts'|'videos')</code>. Writes use <code className="inline-code">Model.morph()</code> + <code className="inline-code">Model.morphToMany().attach()</code>.
|
|
208
324
|
</p>
|
|
209
325
|
</section>
|
|
210
326
|
|
|
@@ -221,8 +337,26 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
221
337
|
<div key={p.id} style={{ borderBottom: '1px solid var(--border, #e5e7eb)', padding: '0.75rem 0' }}>
|
|
222
338
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
223
339
|
<strong>#{p.id} — {p.title}</strong>
|
|
224
|
-
<
|
|
340
|
+
<span style={{ display: 'flex', gap: '0.25rem' }}>
|
|
341
|
+
<button onClick={() => addComment('post', p.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Comment</button>
|
|
342
|
+
<button onClick={() => attachTag('post', p.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Tag</button>
|
|
343
|
+
</span>
|
|
225
344
|
</div>
|
|
345
|
+
{p.tags.length > 0 && (
|
|
346
|
+
<div style={{ marginTop: '0.4rem', display: 'flex', flexWrap: 'wrap', gap: '0.25rem' }}>
|
|
347
|
+
{p.tags.map(t => (
|
|
348
|
+
<button
|
|
349
|
+
key={t.id}
|
|
350
|
+
onClick={() => detachTag('post', p.id, t.id)}
|
|
351
|
+
disabled={loading}
|
|
352
|
+
title="Click to detach"
|
|
353
|
+
style={{ fontSize: '0.7rem', padding: '0.15rem 0.5rem', borderRadius: '999px', background: '#dbeafe', color: '#1e40af', border: '1px solid #93c5fd', cursor: 'pointer' }}
|
|
354
|
+
>
|
|
355
|
+
{t.name} ×
|
|
356
|
+
</button>
|
|
357
|
+
))}
|
|
358
|
+
</div>
|
|
359
|
+
)}
|
|
226
360
|
<ul style={{ marginTop: '0.5rem', paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
227
361
|
{p.comments.map(c => (
|
|
228
362
|
<li key={c.id} style={{ marginBottom: '0.25rem' }}>
|
|
@@ -247,8 +381,26 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
247
381
|
<div key={v.id} style={{ borderBottom: '1px solid var(--border, #e5e7eb)', padding: '0.75rem 0' }}>
|
|
248
382
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
249
383
|
<strong>#{v.id} — {v.url}</strong>
|
|
250
|
-
<
|
|
384
|
+
<span style={{ display: 'flex', gap: '0.25rem' }}>
|
|
385
|
+
<button onClick={() => addComment('video', v.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Comment</button>
|
|
386
|
+
<button onClick={() => attachTag('video', v.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Tag</button>
|
|
387
|
+
</span>
|
|
251
388
|
</div>
|
|
389
|
+
{v.tags.length > 0 && (
|
|
390
|
+
<div style={{ marginTop: '0.4rem', display: 'flex', flexWrap: 'wrap', gap: '0.25rem' }}>
|
|
391
|
+
{v.tags.map(t => (
|
|
392
|
+
<button
|
|
393
|
+
key={t.id}
|
|
394
|
+
onClick={() => detachTag('video', v.id, t.id)}
|
|
395
|
+
disabled={loading}
|
|
396
|
+
title="Click to detach"
|
|
397
|
+
style={{ fontSize: '0.7rem', padding: '0.15rem 0.5rem', borderRadius: '999px', background: '#fce7f3', color: '#9d174d', border: '1px solid #f9a8d4', cursor: 'pointer' }}
|
|
398
|
+
>
|
|
399
|
+
{t.name} ×
|
|
400
|
+
</button>
|
|
401
|
+
))}
|
|
402
|
+
</div>
|
|
403
|
+
)}
|
|
252
404
|
<ul style={{ marginTop: '0.5rem', paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
253
405
|
{v.comments.map(c => (
|
|
254
406
|
<li key={c.id} style={{ marginBottom: '0.25rem' }}>
|
|
@@ -263,6 +415,31 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
263
415
|
</div>
|
|
264
416
|
</div>
|
|
265
417
|
|
|
418
|
+
<div className="demo-card" style={{ maxWidth: '60rem', margin: '1rem auto 0' }}>
|
|
419
|
+
<div className="demo-card-header" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
420
|
+
<h2 className="demo-card-title">Tags (shared)</h2>
|
|
421
|
+
<button className="button-primary" onClick={addTag} disabled={loading}>+ Tag</button>
|
|
422
|
+
</div>
|
|
423
|
+
<div className="demo-card-body">
|
|
424
|
+
{tags.length === 0 && <p className="empty-state">No tags yet.</p>}
|
|
425
|
+
{tags.length > 0 && (
|
|
426
|
+
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.4rem' }}>
|
|
427
|
+
{tags.map(t => (
|
|
428
|
+
<button
|
|
429
|
+
key={t.id}
|
|
430
|
+
onClick={() => resolveInverse(t)}
|
|
431
|
+
disabled={loading}
|
|
432
|
+
title="Show every Post + Video tagged with this"
|
|
433
|
+
style={{ fontSize: '0.8rem', padding: '0.25rem 0.6rem', borderRadius: '999px', background: '#f3f4f6', border: '1px solid #d1d5db', cursor: 'pointer' }}
|
|
434
|
+
>
|
|
435
|
+
{t.name}
|
|
436
|
+
</button>
|
|
437
|
+
))}
|
|
438
|
+
</div>
|
|
439
|
+
)}
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
|
|
266
443
|
{resolved && (
|
|
267
444
|
<div className="demo-card" style={{ maxWidth: '40rem', margin: '1rem auto 0' }}>
|
|
268
445
|
<div className="demo-card-header"><h2 className="demo-card-title">morphTo resolved</h2></div>
|
|
@@ -271,6 +448,33 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
271
448
|
</div>
|
|
272
449
|
</div>
|
|
273
450
|
)}
|
|
451
|
+
|
|
452
|
+
{inverse && (
|
|
453
|
+
<div className="demo-card" style={{ maxWidth: '60rem', margin: '1rem auto 0' }}>
|
|
454
|
+
<div className="demo-card-header"><h2 className="demo-card-title">morphedByMany resolved — tag "{inverse.tag.name}"</h2></div>
|
|
455
|
+
<div className="demo-card-body">
|
|
456
|
+
<p style={{ fontSize: '0.85rem', color: 'var(--text-muted, #888)' }}>
|
|
457
|
+
<code className="inline-code">tag.related('posts').get()</code> + <code className="inline-code">tag.related('videos').get()</code> — one pivot, two scoped reads.
|
|
458
|
+
</p>
|
|
459
|
+
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem', marginTop: '0.5rem' }}>
|
|
460
|
+
<div>
|
|
461
|
+
<strong style={{ fontSize: '0.85rem' }}>Posts ({inverse.data.posts.length})</strong>
|
|
462
|
+
<ul style={{ paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
463
|
+
{inverse.data.posts.map(p => <li key={p.id}>#{p.id} — {p.title}</li>)}
|
|
464
|
+
{inverse.data.posts.length === 0 && <li style={{ color: 'var(--text-muted, #888)' }}>(none)</li>}
|
|
465
|
+
</ul>
|
|
466
|
+
</div>
|
|
467
|
+
<div>
|
|
468
|
+
<strong style={{ fontSize: '0.85rem' }}>Videos ({inverse.data.videos.length})</strong>
|
|
469
|
+
<ul style={{ paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
470
|
+
{inverse.data.videos.map(v => <li key={v.id}>#{v.id} — {v.url}</li>)}
|
|
471
|
+
{inverse.data.videos.length === 0 && <li style={{ color: 'var(--text-muted, #888)' }}>(none)</li>}
|
|
472
|
+
</ul>
|
|
473
|
+
</div>
|
|
474
|
+
</div>
|
|
475
|
+
</div>
|
|
476
|
+
</div>
|
|
477
|
+
)}
|
|
274
478
|
</section>
|
|
275
479
|
</div>
|
|
276
480
|
)
|
|
@@ -279,41 +483,59 @@ export default function PolymorphicDemo({ posts: initialPosts, videos: initialVi
|
|
|
279
483
|
}
|
|
280
484
|
/**
|
|
281
485
|
* Inlined into routes/web.ts demos block. Loads parents + hydrates each parent's
|
|
282
|
-
* comments via the
|
|
283
|
-
* serialize Model instances across the SSR boundary).
|
|
486
|
+
* comments + tags via the polymorphic relations. Returns plain objects (Vike
|
|
487
|
+
* refuses to serialize Model instances across the SSR boundary).
|
|
284
488
|
*/
|
|
285
489
|
export function demosPolymorphicWebBlock() {
|
|
286
490
|
return `Route.get('/demos/polymorphic', async () => {
|
|
287
|
-
const [posts, videos] = await Promise.all([Post.all(), Video.all()])
|
|
491
|
+
const [posts, videos, tags] = await Promise.all([Post.all(), Video.all(), Tag.all()])
|
|
492
|
+
type WithRelated = { related(n: string): { get(): Promise<unknown[]> } }
|
|
288
493
|
const hydrate = async (parent: Post | Video) => {
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
494
|
+
const r = parent as unknown as WithRelated
|
|
495
|
+
const [comments, ptags] = await Promise.all([
|
|
496
|
+
r.related('comments').get() as Promise<Comment[]>,
|
|
497
|
+
r.related('tags').get() as Promise<Tag[]>,
|
|
498
|
+
])
|
|
499
|
+
return {
|
|
500
|
+
...parent,
|
|
501
|
+
comments: comments.map(c => ({ ...c })),
|
|
502
|
+
tags: ptags.map(t => ({ ...t })),
|
|
503
|
+
}
|
|
292
504
|
}
|
|
293
505
|
return view('demos.polymorphic', {
|
|
294
506
|
posts: await Promise.all(posts.map(hydrate)),
|
|
295
507
|
videos: await Promise.all(videos.map(hydrate)),
|
|
508
|
+
tags: tags.map(t => ({ ...t })),
|
|
296
509
|
})
|
|
297
510
|
})`;
|
|
298
511
|
}
|
|
299
512
|
/**
|
|
300
|
-
* Inlined into routes/api.ts demos block.
|
|
301
|
-
* create-video, comment-on-post, comment-on-video,
|
|
513
|
+
* Inlined into routes/api.ts demos block. Endpoints: state, create-post,
|
|
514
|
+
* create-video, comment-on-post, comment-on-video, morphTo resolution,
|
|
515
|
+
* create-tag, attach/detach tag (post + video), morphedByMany inverse.
|
|
302
516
|
*/
|
|
303
517
|
export function demosPolymorphicApiBlock() {
|
|
304
|
-
return `// ── /demos/polymorphic —
|
|
518
|
+
return `// ── /demos/polymorphic — every polymorphic relation type via @rudderjs/orm ──
|
|
305
519
|
|
|
306
|
-
// GET /api/polymorphic/state — posts + videos with
|
|
520
|
+
// GET /api/polymorphic/state — posts + videos with comments + tags + the flat tag list.
|
|
307
521
|
router.get('/api/polymorphic/state', async (_req, res) => {
|
|
308
|
-
const [posts, videos] = await Promise.all([Post.all(), Video.all()])
|
|
522
|
+
const [posts, videos, tags] = await Promise.all([Post.all(), Video.all(), Tag.all()])
|
|
309
523
|
const hydrate = async (parent: Post | Video) => {
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
|
|
524
|
+
const r = parent as unknown as { related(n: string): { get(): Promise<unknown[]> } }
|
|
525
|
+
const [comments, ptags] = await Promise.all([
|
|
526
|
+
r.related('comments').get() as Promise<Comment[]>,
|
|
527
|
+
r.related('tags').get() as Promise<Tag[]>,
|
|
528
|
+
])
|
|
529
|
+
return {
|
|
530
|
+
...parent,
|
|
531
|
+
comments: comments.map(c => ({ ...c })),
|
|
532
|
+
tags: ptags.map(t => ({ ...t })),
|
|
533
|
+
}
|
|
313
534
|
}
|
|
314
535
|
res.json({
|
|
315
536
|
posts: await Promise.all(posts.map(hydrate)),
|
|
316
537
|
videos: await Promise.all(videos.map(hydrate)),
|
|
538
|
+
tags: tags.map(t => ({ ...t })),
|
|
317
539
|
})
|
|
318
540
|
})
|
|
319
541
|
|
|
@@ -356,8 +578,7 @@ router.post('/api/polymorphic/videos/:id/comments', async (req, res) => {
|
|
|
356
578
|
res.status(201).json({ ...comment })
|
|
357
579
|
})
|
|
358
580
|
|
|
359
|
-
// GET /api/polymorphic/comments/:id/parent — morphTo resolution
|
|
360
|
-
// types: () => [Post, Video] list. Branches on commentableType under the hood.
|
|
581
|
+
// GET /api/polymorphic/comments/:id/parent — morphTo resolution.
|
|
361
582
|
router.get('/api/polymorphic/comments/:id/parent', async (req, res) => {
|
|
362
583
|
const idParam = req.params['id']
|
|
363
584
|
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
@@ -373,6 +594,78 @@ router.get('/api/polymorphic/comments/:id/parent', async (req, res) => {
|
|
|
373
594
|
id: parent.id,
|
|
374
595
|
title: 'title' in parent ? parent.title : parent.url,
|
|
375
596
|
})
|
|
597
|
+
})
|
|
598
|
+
|
|
599
|
+
// ── morphToMany / morphedByMany — Tag endpoints ────────────────────────────
|
|
600
|
+
|
|
601
|
+
// POST /api/polymorphic/tags — create a tag.
|
|
602
|
+
router.post('/api/polymorphic/tags', async (req, res) => {
|
|
603
|
+
const { name } = (req.body ?? {}) as { name?: string }
|
|
604
|
+
if (!name) return res.status(400).json({ error: 'name required' })
|
|
605
|
+
const tag = await Tag.create({ name })
|
|
606
|
+
res.status(201).json({ ...tag })
|
|
607
|
+
})
|
|
608
|
+
|
|
609
|
+
// POST /api/polymorphic/posts/:id/tags — morphToMany attach. The pivot row
|
|
610
|
+
// carries taggableType='Post' automatically.
|
|
611
|
+
router.post('/api/polymorphic/posts/:id/tags', async (req, res) => {
|
|
612
|
+
const idParam = req.params['id']
|
|
613
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
614
|
+
const post = await Post.find(Number(idParam))
|
|
615
|
+
if (!post) return res.status(404).json({ error: 'post not found' })
|
|
616
|
+
const { tagId } = (req.body ?? {}) as { tagId?: number }
|
|
617
|
+
if (typeof tagId !== 'number') return res.status(400).json({ error: 'tagId required' })
|
|
618
|
+
await Model.morphToMany(post, 'tags').attach([tagId])
|
|
619
|
+
res.json({ ok: true })
|
|
620
|
+
})
|
|
621
|
+
|
|
622
|
+
router.post('/api/polymorphic/videos/:id/tags', async (req, res) => {
|
|
623
|
+
const idParam = req.params['id']
|
|
624
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
625
|
+
const video = await Video.find(Number(idParam))
|
|
626
|
+
if (!video) return res.status(404).json({ error: 'video not found' })
|
|
627
|
+
const { tagId } = (req.body ?? {}) as { tagId?: number }
|
|
628
|
+
if (typeof tagId !== 'number') return res.status(400).json({ error: 'tagId required' })
|
|
629
|
+
await Model.morphToMany(video, 'tags').attach([tagId])
|
|
630
|
+
res.json({ ok: true })
|
|
631
|
+
})
|
|
632
|
+
|
|
633
|
+
// DELETE /api/polymorphic/(posts|videos)/:id/tags/:tagId — morphToMany detach
|
|
634
|
+
// scoped to the parent's discriminator (videos sharing the tag are untouched).
|
|
635
|
+
router.delete('/api/polymorphic/posts/:id/tags/:tagId', async (req, res) => {
|
|
636
|
+
const id = req.params['id']; const tagId = req.params['tagId']
|
|
637
|
+
if (!id || !tagId) return res.status(400).json({ error: 'id/tagId required' })
|
|
638
|
+
const post = await Post.find(Number(id))
|
|
639
|
+
if (!post) return res.status(404).json({ error: 'post not found' })
|
|
640
|
+
await Model.morphToMany(post, 'tags').detach([Number(tagId)])
|
|
641
|
+
res.json({ ok: true })
|
|
642
|
+
})
|
|
643
|
+
|
|
644
|
+
router.delete('/api/polymorphic/videos/:id/tags/:tagId', async (req, res) => {
|
|
645
|
+
const id = req.params['id']; const tagId = req.params['tagId']
|
|
646
|
+
if (!id || !tagId) return res.status(400).json({ error: 'id/tagId required' })
|
|
647
|
+
const video = await Video.find(Number(id))
|
|
648
|
+
if (!video) return res.status(404).json({ error: 'video not found' })
|
|
649
|
+
await Model.morphToMany(video, 'tags').detach([Number(tagId)])
|
|
650
|
+
res.json({ ok: true })
|
|
651
|
+
})
|
|
652
|
+
|
|
653
|
+
// GET /api/polymorphic/tags/:id/items — morphedByMany inverse fan-out.
|
|
654
|
+
// One pivot, two scoped reads (one per concrete inverse class).
|
|
655
|
+
router.get('/api/polymorphic/tags/:id/items', async (req, res) => {
|
|
656
|
+
const idParam = req.params['id']
|
|
657
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
658
|
+
const tag = await Tag.find(Number(idParam))
|
|
659
|
+
if (!tag) return res.status(404).json({ error: 'tag not found' })
|
|
660
|
+
const r = tag as unknown as { related(n: string): { get(): Promise<unknown[]> } }
|
|
661
|
+
const [posts, videos] = await Promise.all([
|
|
662
|
+
r.related('posts').get() as Promise<Post[]>,
|
|
663
|
+
r.related('videos').get() as Promise<Video[]>,
|
|
664
|
+
])
|
|
665
|
+
res.json({
|
|
666
|
+
posts: posts.map(p => ({ ...p })),
|
|
667
|
+
videos: videos.map(v => ({ ...v })),
|
|
668
|
+
})
|
|
376
669
|
})`;
|
|
377
670
|
}
|
|
378
671
|
//# sourceMappingURL=polymorphic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polymorphic.js","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"polymorphic.js","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,8EAA8E;AAC9E,sCAAsC;AAEtC,MAAM,UAAU,WAAW;IACzB,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkVR,CAAA;AACD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;GAoBN,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuJN,CAAA;AACH,CAAC"}
|
|
@@ -30,7 +30,7 @@ export const DEMOS = [
|
|
|
30
30
|
value: 'polymorphic',
|
|
31
31
|
label: 'Polymorphic relations',
|
|
32
32
|
hint: 'requires ORM',
|
|
33
|
-
description: 'morphMany + morphTo via @rudderjs/orm. One Comment table belongs to either a Post or a Video
|
|
33
|
+
description: 'morphMany + morphTo + morphToMany / morphedByMany via @rudderjs/orm. One Comment table belongs to either a Post or a Video; Posts and Videos share a Tag table through a single polymorphic pivot. End-to-end demo of every polymorphic relation type.',
|
|
34
34
|
packages: ['@rudderjs/orm'],
|
|
35
35
|
requiresOrm: true,
|
|
36
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"AAqBA,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAA4B;IAC5C;QACE,KAAK,EAAQ,SAAS;QACtB,KAAK,EAAQ,cAAc;QAC3B,IAAI,EAAS,uBAAuB;QACpC,WAAW,EAAE,4GAA4G;QACzH,QAAQ,EAAK,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,KAAK,EAAQ,OAAO;QACpB,KAAK,EAAQ,eAAe;QAC5B,IAAI,EAAS,kCAAkC;QAC/C,WAAW,EAAE,mIAAmI;QAChJ,QAAQ,EAAK,CAAC,iBAAiB,CAAC;KACjC;IACD;QACE,KAAK,EAAQ,OAAO;QACpB,KAAK,EAAQ,YAAY;QACzB,KAAK,EAAQ,OAAO;QACpB,IAAI,EAAS,cAAc;QAC3B,WAAW,EAAE,oHAAoH;QACjI,QAAQ,EAAK,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAClD,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAQ,aAAa;QAC1B,KAAK,EAAQ,uBAAuB;QACpC,IAAI,EAAS,cAAc;QAC3B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAW,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAqE9H,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAQ,MAAM,CAAA;IAClB,EAAE,EAAU,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;IAC7C,GAAG,EAAS,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,MAAM,EAAM,MAAM,CAAA;IAClB,UAAU,EAAE,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;IACzC,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,EAAE,EAAU,cAAc,CAAA;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,QAAQ,EAAO,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,aAAa,EAAE,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,EAAE,EAAa,OAAO,CAAA;QACtB,GAAG,EAAY,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,YAAY,EAAG,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,WAAW,EAAI,OAAO,CAAA;KACvB,CAAA;IACD,4FAA4F;IAC5F,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAW,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAqE9H,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAQ,MAAM,CAAA;IAClB,EAAE,EAAU,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;IAC7C,GAAG,EAAS,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,MAAM,EAAM,MAAM,CAAA;IAClB,UAAU,EAAE,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;IACzC,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,EAAE,EAAU,cAAc,CAAA;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,QAAQ,EAAO,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,aAAa,EAAE,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,EAAE,EAAa,OAAO,CAAA;QACtB,GAAG,EAAY,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,YAAY,EAAG,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,WAAW,EAAI,OAAO,CAAA;KACvB,CAAA;IACD,4FAA4F;IAC5F,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2JzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO9E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAGnE"}
|
package/dist/templates.js
CHANGED
|
@@ -48,7 +48,7 @@ import { demoPageConfig, demoPage } from './templates/pages/demo.js';
|
|
|
48
48
|
import { demosIndexView } from './templates/demos/index-view.js';
|
|
49
49
|
import { demosContactView } from './templates/demos/contact.js';
|
|
50
50
|
import { demosTodosView, todoModelPrisma, todoSchema, todoService, todoServiceProvider } from './templates/demos/todos.js';
|
|
51
|
-
import { commentModelTs, demosPolymorphicView, polymorphicPrismaBlock, postModelTs, videoModelTs } from './templates/demos/polymorphic.js';
|
|
51
|
+
import { commentModelTs, demosPolymorphicView, polymorphicPrismaBlock, postModelTs, tagModelTs, videoModelTs } from './templates/demos/polymorphic.js';
|
|
52
52
|
import { demosFibonacciView } from './templates/demos/fibonacci.js';
|
|
53
53
|
import { demosSystemInfoView } from './templates/demos/system-info.js';
|
|
54
54
|
import { demosAvatarView } from './templates/demos/avatar.js';
|
|
@@ -192,6 +192,7 @@ export function getTemplates(ctx) {
|
|
|
192
192
|
files['app/Models/Post.ts'] = postModelTs();
|
|
193
193
|
files['app/Models/Video.ts'] = videoModelTs();
|
|
194
194
|
files['app/Models/Comment.ts'] = commentModelTs();
|
|
195
|
+
files['app/Models/Tag.ts'] = tagModelTs();
|
|
195
196
|
}
|
|
196
197
|
if (shouldScaffoldDemo(ctx, 'fibonacci'))
|
|
197
198
|
files['app/Views/Demos/Fibonacci.tsx'] = demosFibonacciView();
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|