xiongzhu 2 lat temu
rodzic
commit
b13c5dcff2

+ 24 - 1
app/Controllers/Http/PlayHistoriesController.ts

@@ -9,11 +9,34 @@ export default class PlayHistoriesController {
     private paginationService = new PaginationService(PlayHistory)
     private paginationService = new PaginationService(PlayHistory)
 
 
     public async index({ request, auth }: HttpContextContract) {
     public async index({ request, auth }: HttpContextContract) {
-        return await this.paginationService.paginate({
+        const page = await this.paginationService.paginate({
             ...request.all(),
             ...request.all(),
             userId: auth.user!.id,
             userId: auth.user!.id,
             order: 'updatedAt,desc'
             order: 'updatedAt,desc'
         })
         })
+        const seriesIds = new Set(
+            page
+                .all()
+                .map((record) => record.seriesId)
+                .filter((id) => !!id)
+        )
+        const series = await Series.findMany(Array.from(seriesIds))
+        const episodeIds = new Set(
+            page
+                .all()
+                .map((record) => record.episodeId)
+                .filter((id) => !!id)
+        )
+        const episodes = await Episode.findMany(Array.from(episodeIds))
+        page.all().forEach((record) => {
+            if (record.seriesId) {
+                record.series = series.find((s) => s.id === record.seriesId)
+            }
+            if (record.episodeId) {
+                record.episode = episodes.find((e) => e.id === record.episodeId)
+            }
+        })
+        return page
     }
     }
 
 
     public async store({ request, auth }: HttpContextContract) {
     public async store({ request, auth }: HttpContextContract) {

+ 5 - 3
app/Models/PlayHistory.ts

@@ -1,5 +1,5 @@
 import { DateTime } from 'luxon'
 import { DateTime } from 'luxon'
-import { column } from '@ioc:Adonis/Lucid/Orm'
+import { column, computed } from '@ioc:Adonis/Lucid/Orm'
 import Episode from './Episode'
 import Episode from './Episode'
 import Series from './Series'
 import Series from './Series'
 import AppBaseModel from './AppBaseModel'
 import AppBaseModel from './AppBaseModel'
@@ -26,7 +26,9 @@ export default class PlayHistory extends AppBaseModel {
     @column()
     @column()
     public duration: number
     public duration: number
 
 
-    public series: Series
+    @computed()
+    public series?: Series
 
 
-    public episode: Episode
+    @computed()
+    public episode?: Episode
 }
 }

+ 3 - 0
app/Models/User.ts

@@ -42,4 +42,7 @@ export default class User extends AppBaseModel {
 
 
     @column()
     @column()
     public avatar?: string
     public avatar?: string
+
+    @column()
+    public invitor?: number
 }
 }

+ 16 - 0
database/migrations/1701760258633_users.ts

@@ -0,0 +1,16 @@
+import BaseSchema from '@ioc:Adonis/Lucid/Schema'
+
+export default class extends BaseSchema {
+    protected tableName = 'users'
+
+    public async up() {
+        this.schema.alterTable(this.tableName, (table) => {
+            table
+                .integer('invitor')
+                .unsigned()
+                .references('id')
+                .inTable('users')
+                .onDelete('SET NULL')
+        })
+    }
+}

+ 2 - 2
start/routes.ts

@@ -26,13 +26,13 @@ Route.group(() => {
         Route.post('register', 'AuthController.register')
         Route.post('register', 'AuthController.register')
         Route.post('admin/login', 'AuthController.loginAdmin')
         Route.post('admin/login', 'AuthController.loginAdmin')
         Route.get('/google/redirect', async ({ ally }) => {
         Route.get('/google/redirect', async ({ ally }) => {
-            return ally.use('google').redirect()
+            return ally.use('google').stateless().redirect()
         })
         })
         Route.get('/facebook/redirect', async ({ ally }) => {
         Route.get('/facebook/redirect', async ({ ally }) => {
             return ally.use('facebook').redirect()
             return ally.use('facebook').redirect()
         })
         })
         Route.get('/google/callback', async ({ ally }) => {
         Route.get('/google/callback', async ({ ally }) => {
-            const google = ally.use('google')
+            const google = ally.use('google').stateless()
 
 
             /**
             /**
              * User has explicitly denied the login request
              * User has explicitly denied the login request