Skip to content

Commit 49d94ea

Browse files
committed
feat: added framework_version with relation to posts and collections
1 parent 598aec6 commit 49d94ea

36 files changed

+958
-34
lines changed

.adonisjs/api.ts

Lines changed: 113 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
// @ts-nocheck
2-
/* eslint-disable */
3-
// --------------------------------------------------
4-
// This file is auto-generated by Tuyau. Do not edit manually !
5-
// --------------------------------------------------
6-
71
import type { MakeTuyauRequest, MakeTuyauResponse } from '@tuyau/utils/types'
82
import type { InferInput } from '@vinejs/vine/types'
93

@@ -123,6 +117,30 @@ type TaxonomiesIdContentPut = {
123117
request: MakeTuyauRequest<InferInput<typeof import('../app/validators/taxonomy.ts')['taxonomyContentValidator']>>
124118
response: MakeTuyauResponse<import('../app/controllers/taxonomy_contents_controller.ts').default['update'], true>
125119
}
120+
type FrameworkVersionsGetHead = {
121+
request: MakeTuyauRequest<InferInput<typeof import('../app/validators/framework_version.ts')['frameworkVersionIndexValidator']>>
122+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['index'], true>
123+
}
124+
type FrameworkversionsCreateGetHead = {
125+
request: unknown
126+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['create'], false>
127+
}
128+
type FrameworkVersionsPost = {
129+
request: MakeTuyauRequest<InferInput<typeof import('../app/validators/framework_version.ts')['frameworkVersionValidator']>>
130+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['store'], true>
131+
}
132+
type FrameworkversionsIdEditGetHead = {
133+
request: unknown
134+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['edit'], false>
135+
}
136+
type FrameworkversionsIdPut = {
137+
request: MakeTuyauRequest<InferInput<typeof import('../app/validators/framework_version.ts')['frameworkVersionValidator']>>
138+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['update'], true>
139+
}
140+
type FrameworkversionsIdDelete = {
141+
request: unknown
142+
response: MakeTuyauResponse<import('../app/controllers/framework_versions_controller.ts').default['destroy'], false>
143+
}
126144
type UsersGetHead = {
127145
request: MakeTuyauRequest<InferInput<typeof import('../app/validators/user.ts')['userIndexValidator']>>
128146
response: MakeTuyauResponse<import('../app/controllers/users_controller.ts').default['index'], true>
@@ -207,6 +225,10 @@ type CouponsDelete = {
207225
request: unknown
208226
response: MakeTuyauResponse<import('../app/controllers/coupons_controller.ts').default['clear'], false>
209227
}
228+
type AiVideosIdChaptersPost = {
229+
request: unknown
230+
response: MakeTuyauResponse<import('../app/controllers/ai_videos_controller.ts').default['chapters'], false>
231+
}
210232
export interface ApiDefinition {
211233
'login': {
212234
'$url': {
@@ -345,6 +367,31 @@ export interface ApiDefinition {
345367
};
346368
};
347369
};
370+
'framework-versions': {
371+
'$url': {
372+
};
373+
'$get': FrameworkVersionsGetHead;
374+
'$head': FrameworkVersionsGetHead;
375+
'create': {
376+
'$url': {
377+
};
378+
'$get': FrameworkversionsCreateGetHead;
379+
'$head': FrameworkversionsCreateGetHead;
380+
};
381+
'$post': FrameworkVersionsPost;
382+
':id': {
383+
'edit': {
384+
'$url': {
385+
};
386+
'$get': FrameworkversionsIdEditGetHead;
387+
'$head': FrameworkversionsIdEditGetHead;
388+
};
389+
'$url': {
390+
};
391+
'$put': FrameworkversionsIdPut;
392+
'$delete': FrameworkversionsIdDelete;
393+
};
394+
};
348395
'users': {
349396
'$url': {
350397
};
@@ -435,6 +482,17 @@ export interface ApiDefinition {
435482
'$post': CouponsPost;
436483
'$delete': CouponsDelete;
437484
};
485+
'ai': {
486+
'videos': {
487+
':videoId': {
488+
'chapters': {
489+
'$url': {
490+
};
491+
'$post': AiVideosIdChaptersPost;
492+
};
493+
};
494+
};
495+
};
438496
}
439497
const routes = [
440498
{
@@ -654,6 +712,48 @@ const routes = [
654712
method: ["PUT"],
655713
types: {} as TaxonomiesIdContentPut,
656714
},
715+
{
716+
params: [],
717+
name: 'framework_versions.index',
718+
path: '/framework-versions',
719+
method: ["GET","HEAD"],
720+
types: {} as FrameworkVersionsGetHead,
721+
},
722+
{
723+
params: [],
724+
name: 'framework_versions.create',
725+
path: '/framework-versions/create',
726+
method: ["GET","HEAD"],
727+
types: {} as FrameworkversionsCreateGetHead,
728+
},
729+
{
730+
params: [],
731+
name: 'framework_versions.store',
732+
path: '/framework-versions',
733+
method: ["POST"],
734+
types: {} as FrameworkVersionsPost,
735+
},
736+
{
737+
params: ["id"],
738+
name: 'framework_versions.edit',
739+
path: '/framework-versions/:id/edit',
740+
method: ["GET","HEAD"],
741+
types: {} as FrameworkversionsIdEditGetHead,
742+
},
743+
{
744+
params: ["id"],
745+
name: 'framework_versions.update',
746+
path: '/framework-versions/:id',
747+
method: ["PUT"],
748+
types: {} as FrameworkversionsIdPut,
749+
},
750+
{
751+
params: ["id"],
752+
name: 'framework_versions.destroy',
753+
path: '/framework-versions/:id',
754+
method: ["DELETE"],
755+
types: {} as FrameworkversionsIdDelete,
756+
},
657757
{
658758
params: [],
659759
name: 'users.index',
@@ -801,6 +901,13 @@ const routes = [
801901
method: ["DELETE"],
802902
types: {} as CouponsDelete,
803903
},
904+
{
905+
params: ["videoId"],
906+
name: 'ai.videos.chapters',
907+
path: '/ai/videos/:videoId/chapters',
908+
method: ["POST"],
909+
types: {} as AiVideosIdChaptersPost,
910+
},
804911
] as const;
805912
export const api = {
806913
routes,

app/actions/collections/store_collection.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import UpdateAsset from '#actions/assets/update_asset'
2+
import SyncFrameworkVersions from '#actions/framework_versions/sync_framework_versions'
23
import SyncTaxonomies from '#actions/taxonomies/sync_taxonomies'
34
import CollectionTypes from '#enums/collection_types'
45
import States from '#enums/states'
@@ -20,7 +21,7 @@ export default class StoreCollection {
2021
if (!data.statusId) data.statusId = Status.COMING_SOON
2122
if (!data.collectionTypeId) data.collectionTypeId = CollectionTypes.SERIES
2223

23-
const { taxonomyIds, asset, ...store } = data
24+
const { taxonomyIds, frameworkVersionIds, asset, ...store } = data
2425

2526
return db.transaction(async (trx) => {
2627
const collection = await Collection.create(
@@ -33,6 +34,7 @@ export default class StoreCollection {
3334
)
3435

3536
await SyncTaxonomies.handle({ resource: collection, ids: taxonomyIds })
37+
await SyncFrameworkVersions.handle({ resource: collection, ids: frameworkVersionIds })
3638
await UpdateAsset.handle(asset, trx)
3739

3840
return collection

app/actions/collections/update_collection.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import UpdateAsset from '#actions/assets/update_asset'
2+
import SyncFrameworkVersions from '#actions/framework_versions/sync_framework_versions'
23
import SyncTaxonomies from '#actions/taxonomies/sync_taxonomies'
34
import CollectionTypes from '#enums/collection_types'
45
import States from '#enums/states'
@@ -19,7 +20,7 @@ export default class UpdateCollection {
1920
if (!data.statusId) data.statusId = Status.COMING_SOON
2021
if (!data.collectionTypeId) data.collectionTypeId = CollectionTypes.SERIES
2122

22-
const { taxonomyIds, asset, ...update } = data
23+
const { taxonomyIds, frameworkVersionIds, asset, ...update } = data
2324
const collection = await Collection.findOrFail(id)
2425

2526
collection.merge(update)
@@ -29,6 +30,7 @@ export default class UpdateCollection {
2930

3031
await collection.save()
3132
await SyncTaxonomies.handle({ resource: collection, ids: taxonomyIds })
33+
await SyncFrameworkVersions.handle({ resource: collection, ids: frameworkVersionIds })
3234
await UpdateAsset.handle(asset, trx)
3335

3436
return collection
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import FrameworkVersion from '#models/framework_version'
2+
3+
export default class DestroyFrameworkVersion {
4+
static async handle(frameworkVersion: FrameworkVersion) {
5+
await frameworkVersion.related('collections').detach()
6+
await frameworkVersion.related('posts').detach()
7+
await frameworkVersion.delete()
8+
}
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import FrameworkVersion from '#models/framework_version'
2+
3+
export default class GetFrameworkVersions {
4+
static async handle() {
5+
return await FrameworkVersion.query().orderBy('name')
6+
}
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import FrameworkVersion from '#models/framework_version'
2+
import { frameworkVersionValidator } from '#validators/framework_version'
3+
import { Infer } from '@vinejs/vine/types'
4+
5+
type Params = {
6+
data: Infer<typeof frameworkVersionValidator>
7+
}
8+
9+
export default class StoreFrameworkVersion {
10+
static async handle({ data }: Params) {
11+
return await FrameworkVersion.create(data)
12+
}
13+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import NotImplementedException from '#exceptions/not_implemented_exception'
2+
import Collection from '#models/collection'
3+
import Post from '#models/post'
4+
5+
type Resource = Post | Collection
6+
7+
type Params = {
8+
resource: Resource
9+
ids?: number[]
10+
}
11+
12+
export default class SyncFrameworkVersions {
13+
static async handle({ resource, ids = [] }: Params) {
14+
const frameworkVersions = ids.reduce(
15+
(prev, currentId, i) => ({
16+
...prev,
17+
[currentId]: {},
18+
}),
19+
{}
20+
)
21+
22+
switch (true) {
23+
case resource instanceof Post:
24+
await resource.related('frameworkVersions').sync(frameworkVersions)
25+
break
26+
case resource instanceof Collection:
27+
await resource.related('frameworkVersions').sync(frameworkVersions)
28+
break
29+
default:
30+
throw new NotImplementedException(
31+
`SyncFrameworkVersions has not yet implemented ${Object.getPrototypeOf(resource)}`
32+
)
33+
}
34+
}
35+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import FrameworkVersion from '#models/framework_version'
2+
import { frameworkVersionValidator } from '#validators/framework_version'
3+
import { Infer } from '@vinejs/vine/types'
4+
5+
type Params = {
6+
id: number
7+
data: Infer<typeof frameworkVersionValidator>
8+
}
9+
10+
export default class UpdateFrameworkVersion {
11+
static async handle({ id, data }: Params) {
12+
const frameworkVersion = await FrameworkVersion.findOrFail(id)
13+
frameworkVersion.merge(data)
14+
await frameworkVersion.save()
15+
return frameworkVersion
16+
}
17+
}

app/actions/posts/get_post.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default class GetPost {
99
.preload('chapters', (query) => query.orderBy('sort_order'))
1010
.preload('captions', (query) => query.orderBy('sort_order'))
1111
.preload('taxonomies')
12+
.preload('frameworkVersions')
1213

1314
.firstOrFail()
1415
}

app/actions/posts/store_post.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1+
import SyncFrameworkVersions from '#actions/framework_versions/sync_framework_versions'
2+
import SyncTaxonomies from '#actions/taxonomies/sync_taxonomies'
13
import PostTypes from '#enums/post_types'
24
import States from '#enums/states'
35
import Post from '#models/post'
46
import User from '#models/user'
57
import { postValidator } from '#validators/post'
68
import db from '@adonisjs/lucid/services/db'
79
import { Infer } from '@vinejs/vine/types'
8-
import SyncPostAsset from './sync_post_assets.js'
9-
import SyncTaxonomies from '#actions/taxonomies/sync_taxonomies'
1010
import SyncCaptions from './sync_captions.js'
1111
import SyncChapters from './sync_chapters.js'
12+
import SyncPostAsset from './sync_post_assets.js'
1213

1314
type Data = Infer<typeof postValidator>
1415

@@ -27,6 +28,7 @@ export default class StorePost {
2728
publishAtDate,
2829
publishAtTime,
2930
taxonomyIds,
31+
frameworkVersionIds,
3032
captions,
3133
chapters,
3234
isUpdatingContent,
@@ -39,6 +41,7 @@ export default class StorePost {
3941
await post.related('authors').attach([author.id])
4042

4143
await SyncTaxonomies.handle({ resource: post, ids: taxonomyIds })
44+
await SyncFrameworkVersions.handle({ resource: post, ids: frameworkVersionIds })
4245
await SyncPostAsset.handle({ post, asset: thumbnail }, trx)
4346
await SyncCaptions.handle({ post, captions }, trx)
4447
await SyncChapters.handle({ post, chapters }, trx)

0 commit comments

Comments
 (0)