/*
* Copyright (c) 2023. yo-saito. All Rights Reserved.
*/
package net.piedpiper.bremer.entity
import net.piedpiper.bremer.utils.sql.Column
import net.piedpiper.bremer.utils.sql.Table
import java.time.LocalDateTime
@Table("audio")
data class AudioEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("slug")
var slug: String = "",
@property:Column("name")
var name: String = "",
@property:Column("album_id")
var albumId: Long = 0L,
@property:Column("sequence")
var sequence: Int = 0,
@property:Column("path")
var path: String = "",
// join
var album: AlbumEntity? = null,
var aliasNames: List<AudioNameEntity>? = null
)
@Table("audio_name")
data class AudioNameEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("audio_id")
var audioId: Long = 0L,
@property:Column("name")
var name: String = ""
)
@Table("album")
data class AlbumEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("artist_id")
var artistId: Long = 0L,
@property:Column("name")
var name: String = "",
// join
var artist: ArtistEntity? = null
)
@Table("artist")
data class ArtistEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("name")
var name: String = "",
)
@Table("audio_tag")
data class AudioTagEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("audio_id")
var audioId: Long = 0L,
@property:Column("tag_id")
var tagId: Long = 0L
)
@Table("user")
data class UserEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("account_id")
var accountId: String = "",
@property:Column("secret")
var secret: String = "",
)
@Table("audio_play_history")
data class AudioPlayHistoryEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("audio_id")
var audioId: Long = 0L,
@property:Column("last_played_at")
var lastPlayedAt: LocalDateTime = LocalDateTime.MIN
)
@Table("playlist")
data class PlaylistEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("slug")
var slug: String = "",
@property:Column("name")
var name: String = "",
@property:Column("sequence")
var sequence: Int = 0,
// join
var playlistAudio: List<PlaylistAudioEntity> = mutableListOf()
)
@Table("playlist_audio")
data class PlaylistAudioEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("playlist_id")
var playlistId: Long = 0L,
@property:Column("sequence")
var sequence: Int = 0,
@property:Column("audio_id")
var audioId: Long = 0L
)
@Table("tag")
data class TagEntity(
@property:Column("id", insertable = false, updatable = false)
var id: Long = 0L,
@property:Column("slug")
var slug: String = "",
@property:Column("name")
var name: String = "",
)