41 lines
		
	
	
	
		
			1,021 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1,021 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { DateTime } from 'luxon'
 | |
| import { BaseModel, column, computed } from '@adonisjs/lucid/orm'
 | |
| import { DbRememberMeTokensProvider } from '@adonisjs/auth/session'
 | |
| 
 | |
| export default class User extends BaseModel {
 | |
|   static rememberMeTokens = DbRememberMeTokensProvider.forModel(User)
 | |
| 
 | |
|   @column({ isPrimary: true })
 | |
|   declare id: number
 | |
| 
 | |
|   @column()
 | |
|   declare className: string
 | |
| 
 | |
|   @column({ serializeAs: null })
 | |
|   declare firstName: string
 | |
| 
 | |
|   @column({ serializeAs: null })
 | |
|   declare lastName: string
 | |
| 
 | |
|   @computed()
 | |
|   get fullName() {
 | |
|     return `${this.firstName} ${this.lastName}`
 | |
|   }
 | |
| 
 | |
|   @column({ serializeAs: null })
 | |
|   declare email: string
 | |
| 
 | |
|   @column({ serializeAs: null })
 | |
|   declare extras: Record<string, any>
 | |
| 
 | |
|   @computed()
 | |
|   get preferences(): { name: string; emoji: string; color: string }[] {
 | |
|     return this.extras?.preferences || []
 | |
|   }
 | |
| 
 | |
|   @column.dateTime({ autoCreate: true })
 | |
|   declare createdAt: DateTime
 | |
| 
 | |
|   @column.dateTime({ autoCreate: true, autoUpdate: true })
 | |
|   declare updatedAt: DateTime | null
 | |
| }
 | 
