GitBucket
4.23.0
Toggle navigation
Sign in
Files
Branches
1
Releases
Issues
Pull requests
Labels
Priorities
Milestones
Wiki
Forks
yhornisse
/
bremer
Browse code
add alias_name
1 parent
9db1c3d
commit
966e5a8a7858a18e8288f960c1243e5b0e29b948
yhornisse
authored
on 22 Jul 2023
Patch
Showing
4 changed files
src/main/kotlin/entity/Audio.kt
src/main/kotlin/model/api/Audio.kt
src/main/resources/mapper/mapper.xml
src/main/resources/static/bremer/login.html
Ignore Space
Show notes
View
src/main/kotlin/entity/Audio.kt
/* * 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("path") var path: String = "", // join var album: AlbumEntity? = null, var audioNames: 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_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 )
/* * 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("path") var path: String = "", // join var album: AlbumEntity? = null ) @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_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 )
Ignore Space
Show notes
View
src/main/kotlin/model/api/Audio.kt
/* * Copyright (c) 2023. yo-saito. All Rights Reserved. */ package net.piedpiper.bremer.model.api import net.piedpiper.bremer.entity.AudioEntity data class AudioListResponse( private val entities: List<AudioEntity> ) { val audio: List<Audio> = entities.map { Audio(it) } data class Audio( private val entity: AudioEntity ) { val name: String = entity.name val slug: String = entity.slug val artist: String? = entity?.album?.artist?.name val album: String? = entity?.album?.name var aliasNames: List<String>? = entity?.audioNames?.map { it.name } } }
/* * Copyright (c) 2023. yo-saito. All Rights Reserved. */ package net.piedpiper.bremer.model.api import net.piedpiper.bremer.entity.AudioEntity data class AudioListResponse( private val entities: List<AudioEntity> ) { val audio: List<Audio> = entities.map { Audio(it) } data class Audio( private val entity: AudioEntity ) { val name: String = entity.name val slug: String = entity.slug val artist: String? = entity?.album?.artist?.name val album: String? = entity?.album?.name } }
Ignore Space
Show notes
View
src/main/resources/mapper/mapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="net.piedpiper.bremer"> <resultMap id="AudioEntity" type="net.piedpiper.bremer.entity.AudioEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="slug" column="slug"/> <result property="articleId" column="article_id"/> <result property="albumId" column="album_id"/> <result property="path" column="path"/> <association property="album" columnPrefix="album__" resultMap="AlbumEntity"/> <collection property="audioName" columnPrefix="audio_name__" resultMap="AudioNameEntity"/> </resultMap> <resultMap id="AudioNameEntity" type="net.piedpiper.bremer.entity.AudioEntity"> <id property="id" column="id"/> <result property="audioId" column="audio_id"/> <result property="name" column="name"/> </resultMap> <resultMap id="ArtistEntity" type="net.piedpiper.bremer.entity.ArtistEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <association property="artist" columnPrefix="artist__" resultMap="ArtistEntity"/> </resultMap> <resultMap id="AlbumEntity" type="net.piedpiper.bremer.entity.AlbumEntity"> <id property="id" column="id"/> <result property="name" column="name"/> </resultMap> <resultMap id="AudioPlayHistoryEntity" type="net.piedpiper.bremer.entity.AudioPlayHistoryEntity"> <id property="id" column="id"/> <result property="audioId" column="audio_id"/> <result property="lastPlayedAt" column="last_played_at" typeHandler="net.piedpiper.bremer.dao.handler.LocalDateTimeTypeHandler"/> </resultMap> <resultMap id="PlaylistEntity" type="net.piedpiper.bremer.entity.PlaylistEntity"> <id property="id" column="id"/> <result property="albumId" column="album_id"/> <result property="slug" column="slug"/> <result property="name" column="name"/> <collection property="playlistAudio" columnPrefix="playlist_audio__" resultMap="PlaylistAudioEntity"/> </resultMap> <resultMap id="PlaylistAudioEntity" type="net.piedpiper.bremer.entity.PlaylistAudioEntity"> <id property="id" column="id"/> <result property="playlistId" column="playlist_id"/> <result property="sequence" column="sequence"/> <result property="audioId" column="audio_id"/> </resultMap> <resultMap id="UserEntity" type="net.piedpiper.bremer.entity.UserEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="secret" column="secret"/> </resultMap> </mapper>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="net.piedpiper.bremer"> <resultMap id="AudioEntity" type="net.piedpiper.bremer.entity.AudioEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="slug" column="slug"/> <result property="articleId" column="article_id"/> <result property="albumId" column="album_id"/> <result property="path" column="path"/> <association property="album" columnPrefix="album__" resultMap="AlbumEntity"/> </resultMap> <resultMap id="ArtistEntity" type="net.piedpiper.bremer.entity.ArtistEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <association property="artist" columnPrefix="artist__" resultMap="ArtistEntity"/> </resultMap> <resultMap id="AlbumEntity" type="net.piedpiper.bremer.entity.AlbumEntity"> <id property="id" column="id"/> <result property="name" column="name"/> </resultMap> <resultMap id="AudioPlayHistoryEntity" type="net.piedpiper.bremer.entity.AudioPlayHistoryEntity"> <id property="id" column="id"/> <result property="audioId" column="audio_id"/> <result property="lastPlayedAt" column="last_played_at" typeHandler="net.piedpiper.bremer.dao.handler.LocalDateTimeTypeHandler"/> </resultMap> <resultMap id="PlaylistEntity" type="net.piedpiper.bremer.entity.PlaylistEntity"> <id property="id" column="id"/> <result property="albumId" column="album_id"/> <result property="slug" column="slug"/> <result property="name" column="name"/> <collection property="playlistAudio" columnPrefix="playlist_audio__" resultMap="PlaylistAudioEntity"/> </resultMap> <resultMap id="PlaylistAudioEntity" type="net.piedpiper.bremer.entity.PlaylistAudioEntity"> <id property="id" column="id"/> <result property="playlistId" column="playlist_id"/> <result property="sequence" column="sequence"/> <result property="audioId" column="audio_id"/> </resultMap> <resultMap id="UserEntity" type="net.piedpiper.bremer.entity.UserEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="secret" column="secret"/> </resultMap> </mapper>
Ignore Space
Show notes
View
src/main/resources/static/bremer/login.html
<!-- ~ Copyright (c) 2023. yo-saito. All Rights Reserved. --> <!doctype html> <html> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> window.onload = function () { const searchParams = new URLSearchParams(window.location.search) if (searchParams.has('failed')) { document.getElementById("warn").innerText = "ログインに失敗しました" } } </script> </head> <body style="margin: 0; padding: 0;"> <h1 style="background-color: #9999FF; margin: 0; padding: 0.5rem;">Bremer</h1> <form method="POST" action="/bremer/login"> <div id="warn" style="color: red;"> </div> <div> <div>ID</div> <div><input type="text" name="id" value="" style="width: 80%"/></div> <div style="margin-top: 0.5rem;">パスワード</div> <div><input type="password" name="password" value="" style="width: 80%"/></div> </div> <div style="margin-top:1rem;"> <button type="submit" style="width: 80%">ログイン</button> </div> </form> </body> </html>
<!-- ~ Copyright (c) 2023. yo-saito. All Rights Reserved. --> <!doctype html> <html> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> window.onload = function () { const searchParams = new URLSearchParams(window.location.search) if (searchParams.has('failed')) { document.getElementById("warn").innerText = "ログインに失敗しました" } } </script> </head> <body style="margin: 0; padding: 0;"> <h1 style="background-color: #9999FF; margin: 0; padding: 0.5rem;">Bremer</h1> <form method="POST" action="/bremer/login"> <div id="warn" style="color: red;"> </div> <div> <div>ID</div> <div><input type="text" name="id" value="user" style="width: 80%"/></div> <div style="margin-top: 0.5rem;">パスワード</div> <div><input type="password" name="password" value="password" style="width: 80%"/></div> </div> <div style="margin-top:1rem;"> <button type="submit" style="width: 80%">ログイン</button> </div> </form> </body> </html>
Show line notes below