add MediaMusic
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 8s
Gitea Actions Demo / build-and-test (push) Failing after 20m33s

This commit is contained in:
Thomas Peetz
2026-10-27 16:15:34 +01:00
parent 72c08f9731
commit 4c681c33dc
15 changed files with 135515 additions and 162 deletions
+24
View File
@@ -32,3 +32,27 @@ class MediaActorModel(BaseModel):
version: int
name: Optional[str]
url: Optional[str]
def actor_to_model(model: MediaActorResponse, media_actor: MediaActor) -> MediaActor:
"""
Set data of response to model
"""
media_actor.file_name = model.file_name
if model.url is not None:
media_actor.url = model.url
else:
media_actor.url = ""
media_actor.last_modified_date = datetime.now()
return media_actor
def actor_to_response(media_actor: MediaActor) -> MediaActorResponse:
response: MediaActorResponse = MediaActorResponse(
id=media_actor.id,
created_date=media_actor.created_date,
last_modified_date=media_actor.last_modified_date,
version=media_actor.version,
name=str(media_actor.name),
url=str(media_actor.url),
)
return response
+5
View File
@@ -46,6 +46,7 @@ type ExportData struct {
MediaArticle []models.MediaArticleDTO `json:"media_article"`
MediaVideo []models.MediaVideoDTO `json:"media_video"`
MediaLoFi models.MediaLoFiDTOList `json:"media_lofi"`
MediaMusic models.MediaMusicDTOList `json:"media_music"`
MediaFile []models.MediaFileDTO `json:"media_file"`
MediaActor []models.MediaActorDTO `json:"media_actor"`
MediaActorFile []models.MediaActorFileDTO `json:"media_actor_file"`
@@ -101,6 +102,7 @@ var (
Mediaactorfiles []models.MediaActorFileDTO
Mediafiles []models.MediaFileDTO
Medialofis models.MediaLoFiDTOList
MediaMusics models.MediaMusicDTOList
Profiles []models.ProfileDTO
Permissions []models.PermissionDTO
Assignments []models.AssignmentDTO
@@ -172,6 +174,7 @@ func GetData(server config.Server, apiVersion string) (data *ExportData, err err
MediaActorFile: Mediaactorfiles,
MediaFile: Mediafiles,
MediaLoFi: Medialofis,
MediaMusic: MediaMusics,
Profile: Profiles,
Permission: Permissions,
Assignment: Assignments,
@@ -184,6 +187,7 @@ func GetData(server config.Server, apiVersion string) (data *ExportData, err err
}
func DeleteData(target config.Server, path, id string) {
slog.Info("DeleteData")
url := fmt.Sprintf("%s/%s/%s/%s", target.Url, config.Config.ApiVersion, path, id)
client := resty.New()
client.SetLoggerWarnLevel(true)
@@ -295,6 +299,7 @@ func init() {
"media/files": &Mediafiles,
"media/actorfiles": &Mediaactorfiles,
"media/lofis": &Medialofis,
"media/musics": &MediaMusics,
"user/profiles": &Profiles,
"user/permissions": &Permissions,
"user/assignments": &Assignments,
+2
View File
@@ -8,6 +8,7 @@ type MediaHandler struct {
MediaActorHandler *MediaActorHandler
MediaFileHandler *MediaFileHandler
MediaLoFiHandler *MediaLoFiHandler
MediaMusicHandler *MediaMusicHandler
MediaVideoHandler *MediaVideoHandler
MediaActorFileHandler *MediaActorFileHandler
}
@@ -17,6 +18,7 @@ func NewMediaHandler(db *gorm.DB) *MediaHandler {
MediaActorHandler: NewMediaActorHandler(db),
MediaFileHandler: NewMediaFileHandler(db),
MediaLoFiHandler: NewMediaLoFiHandler(db),
MediaMusicHandler: NewMediaMusicHandler(db),
MediaVideoHandler: NewMediaVideoHandler(db),
MediaActorFileHandler: NewMediaActorFileHandler(db),
}
+183
View File
@@ -0,0 +1,183 @@
package handlers
import (
"kontor-api-gin/internal/globals"
"kontor-api-gin/internal/models"
"kontor-api-gin/internal/repository"
"kontor-api-gin/internal/service"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type MediaMusicHandler struct {
Service *service.MediaMusicService
}
func NewMediaMusicHandler(db *gorm.DB) *MediaMusicHandler {
mediaMusicHandler := &MediaMusicHandler{
Service: service.NewMediaMusicService(repository.NewMediaMusicRepository(db)),
}
return mediaMusicHandler
}
func (handler *MediaMusicHandler) List(c *gin.Context) {
musics, err := handler.Service.List(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
dtos := models.ConvertMediaMusicsToDtos(musics)
c.JSON(http.StatusOK, dtos)
}
func (handler *MediaMusicHandler) Get(c *gin.Context) {
id := c.Param("id")
music, err := handler.Service.Get(c.Request.Context(), id)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "MediaMusic not found"})
return
}
c.JSON(http.StatusOK, music)
}
func (handler *MediaMusicHandler) Add(c *gin.Context) {
var input models.MediaLofiAdd
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
music, err := handler.Service.Add(c.Request.Context(), input.Url)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "MediaMusic not added"})
return
}
c.JSON(http.StatusOK, music)
}
func (handler *MediaMusicHandler) Update(c *gin.Context) {
var input models.MediaMusicDTO
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
music, err := handler.Service.Update(c.Request.Context(), input)
if err != nil {
logger := slog.Get(c)
logger.Info("MediaMusicHandler#Update", "error", err.Error())
c.JSON(http.StatusNotFound, gin.H{"error": "MediaMusic not updated"})
return
}
c.JSON(http.StatusOK, music)
}
func (handler *MediaMusicHandler) Delete(c *gin.Context) {
id := c.Param("id")
err := handler.Service.Delete(c.Request.Context(), id)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "MediaMusic not found"})
return
}
c.JSON(http.StatusOK, gin.H{"ok": "true"})
}
func (handler *MediaMusicHandler) ListPage(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
var (
review bool
download bool
)
paramReview, existsReview := c.GetQuery("review")
if existsReview {
if paramReview == "on" {
review = true
} else {
review = false
}
}
paramDownload, existsDownload := c.GetQuery("should_download")
if existsDownload {
if paramDownload == "on" {
download = true
} else {
download = false
}
}
musics, err := handler.Service.List(c.Request.Context())
if err != nil {
logger.Info("MediaMusicHandler#ListPage", "error", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
logger.Info("MediaMusicHandler#ListPage", "MediaMusic count", len(musics))
data := globals.GetDefaultValues(user, "MediaMusic...")
data["media_links"] = musics
data["MediaLinksUrl"] = "/web/media-musics"
data["isReview"] = review
data["isDownload"] = download
c.HTML(http.StatusOK, "media_links", data)
}
func (handler *MediaMusicHandler) EditPage(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
id := c.Param("id")
logger := slog.Get(c)
music, err := handler.Service.Get(c.Request.Context(), id)
if err != nil {
logger.Info("MediaMusicHandler#EditPage", "error", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
logger.Info("MediaMusicHandler#EditPage", "music", music)
data := globals.GetDefaultValues(user, "MediaMusic...")
data["lofi"] = music
c.HTML(http.StatusOK, "lofi_detail", data)
}
func (handler *MediaMusicHandler) UpdatePage(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
id := c.Param("id")
logger := slog.Get(c)
music, err := handler.Service.Get(c.Request.Context(), id)
if err != nil {
logger.Info("MediaMusicHandler#UpdatePage", "error", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
var form models.MediaMusicForm
if err := c.ShouldBind(&form); err != nil {
logger.Info("MediaMusicHandler#UpdatePage", "error", err.Error())
data := globals.GetDefaultValues(user, "MediaMusic...")
data["Form"] = form
data["Errors"] = err.Error()
c.HTML(http.StatusBadRequest, "lofi_detail", data)
return
}
logger.Info("MediaMusicHandler#UpdatePage", "music", music)
//handler.Service.Update(c.Request.Context(), form.ConvertFormToMediaLofiDTO())
c.Redirect(http.StatusFound, "web/media-musics")
}
func (handler *MediaMusicHandler) DeletePage(c *gin.Context) {
// session := sessions.Default(c)
// user := session.Get(globals.UserKey)
id := c.Param("id")
logger := slog.Get(c)
err := handler.Service.Delete(c.Request.Context(), id)
if err != nil {
logger.Info("MediaMusicHandler#DeletePage", "error", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
logger.Info("MediaMusicHandler#DeletePage", "music", id)
c.Redirect(http.StatusFound, "web/media-musics")
}
+177
View File
@@ -0,0 +1,177 @@
package models
import (
"fmt"
"kontor-api-gin/internal/config"
"kontor-api-gin/internal/helpers"
"log/slog"
"time"
)
type MediaMusic struct {
ID string `gorm:"type:string;primary_key;" json:"id"`
CreatedAt time.Time `gorm:"column:created_date" json:"created_date"`
UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"`
DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"`
Version int `gorm:"default:0" json:"version"`
WebLink string `gorm:"column:url" json:"url"`
Review bool `gorm:"column:review" json:"review"`
ShouldDownload bool `gorm:"column:should_download" json:"should_download"`
Title string `gorm:"size:300;column:title" json:"title"`
FileName string `gorm:"column:file_name" json:"file_name"`
}
func (media_music *MediaMusic) Update(update MediaMusicDTO) {
media_music.CreatedAt = update.CreatedAt.Time
media_music.UpdatedAt = time.Now()
media_music.Version = media_music.Version + 1
media_music.WebLink = update.WebLink
media_music.Review = update.Review
media_music.ShouldDownload = update.ShouldDownload
media_music.Title = update.Title
media_music.FileName = update.FileName
}
func (media_music *MediaMusic) TableName() string {
return "media_music"
}
func (media_music *MediaMusic) ConvertMediaMusicToDTO() MediaMusicDTO {
dto := MediaMusicDTO{
ID: media_music.ID,
CreatedAt: helpers.KontorTime{Time: media_music.CreatedAt},
UpdatedAt: helpers.KontorTime{Time: media_music.UpdatedAt},
DeletedAt: media_music.DeletedAt,
Version: media_music.Version,
WebLink: media_music.WebLink,
Review: media_music.Review,
ShouldDownload: media_music.ShouldDownload,
Title: media_music.Title,
FileName: media_music.FileName,
}
return dto
}
type MediaMusicAdd struct {
Url string `json:"url"`
}
type MediaMusicForm struct {
Title string `form:"title" binding:"required"`
Url string `form:"url" binding:"required"`
}
func (form *MediaMusicForm) ConvertFormToMediaMusicDTO() MediaMusicDTO {
media_music := MediaMusicDTO{}
return media_music
}
type MediaMusicDTO struct {
ID string `json:"id" binding:"required"`
CreatedAt helpers.KontorTime `json:"created_date"`
UpdatedAt helpers.KontorTime `json:"last_modified_date"`
DeletedAt *time.Time `json:"deleted_date,omitempty"`
Version int `json:"version"`
FileName string `json:"file_name"`
Review bool `json:"review"`
ShouldDownload bool `json:"should_download"`
Title string `json:"title"`
WebLink string `json:"url"`
}
func (source MediaMusicDTO) Equals(target MediaMusicDTO) bool {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals", "id", source.ID)
}
equals := true
if source.Title != target.Title {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: Title changed")
}
equals = false
}
if source.WebLink != target.WebLink {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: WebLink changed")
}
equals = false
}
if source.Version != target.Version {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: Version changed")
}
equals = false
}
if source.FileName != target.FileName {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: FileName changed")
}
equals = false
}
if source.Review != target.Review {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: Review changed")
}
equals = false
}
if source.ShouldDownload != target.ShouldDownload {
if config.Verbose > 1 {
slog.Info("MediaMusicDTO#Equals: ShouldDownload changed")
}
equals = false
}
return equals
}
type MediaMusicDTOList []MediaMusicDTO
func (source MediaMusicDTOList) GetMediaMusic(music_id string) *MediaMusicDTO {
for _, music := range source {
if music.ID == music_id {
return &music
}
}
return nil
}
func (source *MediaMusicDTOList) CompareIds(target *MediaMusicDTOList) (missing, obsolete, changed []string) {
sources := make(map[string]MediaMusicDTO, len(*source))
targets := make(map[string]MediaMusicDTO, len(*target))
for _, source := range *source {
sources[source.ID] = source
}
for _, target := range *target {
targets[target.ID] = target
}
// iterate source IDs
for id := range sources {
if _, ok := targets[id]; ok {
if config.Verbose > 1 {
slog.Info(fmt.Sprintf("ID %s found in both lists", id))
}
if !sources[id].Equals(targets[id]) {
changed = append(changed, id)
}
} else {
missing = append(missing, id)
}
}
for id := range targets {
if _, ok := sources[id]; ok {
slog.Debug(fmt.Sprintf("ID %s found in both lists", id))
} else {
obsolete = append(obsolete, id)
}
}
slog.Info("CompareIds", "missing", len(missing), "obsolete", len(obsolete), "changed", len(changed))
slog.Debug("CompareIds", "missing", missing, "obsolete", obsolete)
return missing, obsolete, changed
}
func ConvertMediaMusicsToDtos(media_musics []MediaMusic) MediaMusicDTOList {
dtos := make(MediaMusicDTOList, len(media_musics))
for i, media_music := range media_musics {
dtos[i] = media_music.ConvertMediaMusicToDTO()
}
return dtos
}
@@ -0,0 +1,103 @@
package repository
import (
"context"
"errors"
"fmt"
"kontor-api-gin/internal/helpers"
"kontor-api-gin/internal/models"
"log/slog"
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
type MediaMusicRepository struct {
db *gorm.DB
}
func NewMediaMusicRepository(db *gorm.DB) *MediaMusicRepository {
repo := &MediaMusicRepository{db: db}
return repo
}
func (repository *MediaMusicRepository) FindAll(context context.Context) ([]models.MediaMusic, error) {
var musics []models.MediaMusic
result := repository.db.Find(&musics)
slog.Info("MediaMusicRepository#FindAll", "count", result.RowsAffected)
return musics, nil
}
func (repository *MediaMusicRepository) GetById(context context.Context, id string) (*models.MediaMusic, error) {
var music = models.MediaMusic{ID: id}
slog.Info("MediaMusicRepository#GetById", "id", id)
result := repository.db.First(&music)
if result.Error != nil {
slog.Info("MediaMusicRepository#GetById", "error", result.Error.Error())
}
return &music, result.Error
}
func (repository *MediaMusicRepository) Add(context context.Context, url string) (*models.MediaMusic, error) {
slog.Info("MediaMusicRepository#Add", "url", url)
webLink := helpers.StripUrl(url, "v")
var music models.MediaMusic
search_result := repository.db.Where("url = ?", webLink).First(&music)
if search_result.RowsAffected > 0 {
slog.Info("search for existing url", "result", search_result, "music", music)
return &music, nil
}
if errors.Is(search_result.Error, gorm.ErrRecordNotFound) {
slog.Info("MediaMusicRepository#Add URL not found", "url", webLink)
music = models.MediaMusic{
ID: uuid.NewString(),
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
DeletedAt: nil,
Version: 0,
WebLink: webLink,
ShouldDownload: false,
Review: true,
Title: "",
FileName: "",
}
add_result := repository.db.Create(&music)
if add_result.Error != nil {
slog.Info("add new MediaMusic", "error", add_result.Error)
return nil, add_result.Error
}
slog.Info("add new MediaMusic", "music", music)
return &music, nil
}
if search_result.Error != nil {
return nil, search_result.Error
}
return nil, fmt.Errorf("MediaMusicRepository#Add unknown error")
}
func (repository *MediaMusicRepository) Update(context context.Context, update models.MediaMusicDTO) (*models.MediaMusic, error) {
slog.Info("MediaMusicRepository#Update", "music", update)
var music = models.MediaMusic{ID: update.ID}
slog.Info("MediaMusicRepository#Update", "id", update.ID)
result := repository.db.First(&music)
if result.Error != nil {
slog.Info("MediaMusicRepository#Update", "error", result.Error.Error())
return nil, result.Error
}
music.Update(update)
repository.db.Save(&music)
return &music, nil
}
func (repository *MediaMusicRepository) Delete(context context.Context, id string) error {
var actor = models.MediaMusic{ID: id}
slog.Info("MediaMusicRepository#Delete", "id", id)
result := repository.db.Delete(&actor)
if result.Error != nil {
slog.Info("MediaMusicRepository#Delete", "error", result.Error.Error())
}
return result.Error
}
+4
View File
@@ -71,6 +71,10 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com
m.POST("/media-lofis/:id/edit", media.MediaLoFiHandler.UpdatePage)
m.GET("/media-lofis/:id/change-review", media.MediaLoFiHandler.ChangeReviewPage)
m.GET("/media-lofis/:id/delete", media.MediaLoFiHandler.DeletePage)
m.GET("/media-musics", media.MediaMusicHandler.ListPage)
m.GET("/media-musics/:id", media.MediaMusicHandler.EditPage)
m.POST("/media-musics/:id", media.MediaMusicHandler.UpdatePage)
m.GET("/media-musics/:id/delete", media.MediaMusicHandler.DeletePage)
api := router.Group("/api")
api.POST("/login", admin.AuthHandler.Login)
@@ -0,0 +1,42 @@
package service
import (
"context"
"kontor-api-gin/internal/models"
"kontor-api-gin/internal/repository"
"log/slog"
)
type MediaMusicService struct {
repository *repository.MediaMusicRepository
}
func NewMediaMusicService(repo *repository.MediaMusicRepository) *MediaMusicService {
service := &MediaMusicService{repository: repo}
return service
}
func (service *MediaMusicService) List(context context.Context) ([]models.MediaMusic, error) {
slog.Info("MediaMusicService#List")
return service.repository.FindAll(context)
}
func (service *MediaMusicService) Get(context context.Context, id string) (*models.MediaMusic, error) {
slog.Info("MediaMusicService#Get")
return service.repository.GetById(context, id)
}
func (service *MediaMusicService) Add(context context.Context, url string) (*models.MediaMusic, error) {
slog.Info("MediaMusicService#Add")
return service.repository.Add(context, url)
}
func (service *MediaMusicService) Update(context context.Context, music models.MediaMusicDTO) (*models.MediaMusic, error) {
slog.Info("MediaMusicService#Update")
return service.repository.Update(context, music)
}
func (service *MediaMusicService) Delete(context context.Context, id string) error {
slog.Info("MediaMusicService#Delete")
return service.repository.Delete(context, id)
}
File diff suppressed because it is too large Load Diff
+1
View File
@@ -24,6 +24,7 @@
<a class="dropdown-item" href="/web/media-files">Media Files</a>
<a class="dropdown-item" href="/web/actors">Media Actors</a>
<a class="dropdown-item" href="/web/media-lofis">Media Lofi</a>
<a class="dropdown-item" href="/web/media-musics">Media Music</a>
<a class="dropdown-item" href="/web/media-videos">Media Videos</a>
<a class="dropdown-item" href="/web/articles">Artikel</a>
</div>
@@ -0,0 +1,71 @@
{{ define "media_links" }}
<!doctype html>
<html lang="de">
{{ template "head" . }}
<body>
{{ template "navbar" . }}
<main>
<div class="row">
<form class="form-inline" action="{{ .MediaLinksUrl }}">
<input type="text" placeholder="Search" name="query">
<label>
<input type="checkbox" name="review" {{ if .Review }}checked{{ end }}>Review
</label>
<label>
<input type="checkbox" name="download" {{ if .ShouldDownload }}checked{{ end }}>Download
</label>
<button type="submit">Search</button>
<div class="pill-nav"><a href="{{ .MediaLinksUrl }}/add">Add MediaFile</a></div>
</form>
</div>
<div class="row">
<div class="maincolumn">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Title</th>
<th scope="col">Weblink</th>
<th scope="col">Review</th>
<th scope="col">Download</th>
<th colspan="2">Actions</th>
</tr>
</thead>
<tbody>
{{ range .media_links }}
<tr>
<th scope="row"><a href="{{ .MediaLinksUrl }}/{{.ID}}">{{.Title}}</a></th>
{{ if .WebLink }}
<td><a href="{{.WebLink}}">{{.WebLink}}</a></td>
{{ else }}
<td>no link</td>
{{ end }}
<td>
{{ if .Review }}
<img src="/public/icons/tick.png" alt="true" width="24" height="24">
{{ else }}
<img src="/public/icons/cross.png" alt="true" width="24" height="24">
{{ end }}
</td>
<td>
{{ if .ShouldDownload }}
<img src="/public/icons/tick.png" alt="true" width="24" height="24">
{{ else }}
<img src="/public/icons/cross.png" alt="true" width="24" height="24">
{{ end }}
</td>
<td><a href="{{ .MediaLinksUrl }}/{{.ID}}" class="btn btn-outline-primary btn-sm active" role="button"
aria-pressed="true">Edit</a></td>
<td><a href="{ .MediaLinksUrl }/{{.ID}}/delete" class="btn btn-outline-danger btn-sm active"
role="button" aria-pressed="true">Delete</a></td>
</tr>
{{ end }}
</tbody>
</table>
</div>
</div>
</main>
{{ template "footer" . }}
</body>
</html>
{{ end }}
@@ -5,113 +5,113 @@ import 'Frontend/generated/jar-resources/ReactRouterOutletElement.tsx';
const loadOnDemand = (key) => {
const pending = [];
if (key === '9f40817b690e11a5b23a3159bb774f15430c23768f26dc0d15efccc3d65223ac') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '2140ca6af7e9a5ff94d8a66b6e5a23e6d184ef7901ca73d33b3c30f74f94708a') {
pending.push(import('./chunks/chunk-eab035454a058f437d12e5ccf64ef647181029b965d466c829f5a569b2865dd3.js'));
}
if (key === 'c5f987a4896c791d13aeb6a03a4783ff03df304750a7db930a18d399dba31509') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'b4afd0c0906e26b51836d41720e1b8d91a7cacf0fd42e089f1e0fbc2ee27a5bb') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'a886fd99e05dd2c5ce3e4b643dc8d6d29189dee784fa78678d8ab4fcb89216c0') {
pending.push(import('./chunks/chunk-4643e5b30878e982c301927c78b86af508e91d91560341ef83fa0e6bf79dedee.js'));
}
if (key === 'c0816c2bfaa97d6f3e7eea83c5478186457bdc79cfe3f284c42e192d68607157') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '803ed44611ffeb1bcb1f604f267f09af48ef8a5bc8d765e481b67ed59f9b880a') {
pending.push(import('./chunks/chunk-5f54f3be0c0d908c0477e60450f72fbb60bfa31e84e7d18b39841a003d995f86.js'));
}
if (key === '96ecac798fbbe91ef146ac4a25f5c31827427ca0f106ba66e63fc1fd6c27b83d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '28b5e9145505152a4dbd9600977b8177d3a161906581ca5a1a923affc812a761') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === '2062a3f35e8fdb051e9362a8a8895d80ef719832e9394babcbaab3aac56d4f0e') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === '39b4a07b2b07a780f8ac9d2f7cc855e3b78ec60465d9d808690466c1f0bea792') {
pending.push(import('./chunks/chunk-9067a52cbc57d972c6155501cef5bd27a816f0c7adf6390a603c7b4e9bbddce3.js'));
}
if (key === '4e356c0939a28ab8766b0375ca6cb478b6163eb9ad80745a9e2f2fc80997b6a2') {
pending.push(import('./chunks/chunk-82d1654bda3835e43a2a0c9a2e52925f12dc4a2fcd20b5f40603dbbe6eb1ff23.js'));
}
if (key === '53ff1588255d7e5486eb67452c8d9c43baea0eecd9bd509fd7f0c55b3cccaa0d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '83045a9760ea76fd534ed71ed553dc7cf2595a5d697e3c7bc55470d219770d05') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'ac7af13a0805d3ce8a287e9d860521c82aaf55d2c448ce3f62a85d44216a8189') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
if (key === '2140ca6af7e9a5ff94d8a66b6e5a23e6d184ef7901ca73d33b3c30f74f94708a') {
pending.push(import('./chunks/chunk-eab035454a058f437d12e5ccf64ef647181029b965d466c829f5a569b2865dd3.js'));
}
if (key === '5d710852587ce9ebabfac9ed950f6b11bc3a87d96860d4efdfb61dab7ae54091') {
if (key === '803ed44611ffeb1bcb1f604f267f09af48ef8a5bc8d765e481b67ed59f9b880a') {
pending.push(import('./chunks/chunk-5f54f3be0c0d908c0477e60450f72fbb60bfa31e84e7d18b39841a003d995f86.js'));
}
if (key === 'b4afd0c0906e26b51836d41720e1b8d91a7cacf0fd42e089f1e0fbc2ee27a5bb') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '2b0ca0e51ded6027d3f9e464513210d5503ab2a9bc532de5cfc81d78a58f422f') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '68a5f871903ca703f0fac8dd0072e1bfc082ffa14aa445026be6e1eb6cfe1bd0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'bfac19b5aab9cd5a47ff4a66f2a839ebbb4889867824be809c5dc3a3d47f94b8') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '3e87cbb0d40d50da9c3b69d0dada85fe9b7f2f4bae2b79c8f0408a798b120549') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === 'dca37e6961f625182e78a722a61c0eb9b8a2357b5e787fe616fe5993c2db5133') {
pending.push(import('./chunks/chunk-dbbf8c73fe9c2c76fb9306f96bfa7ff293eff804705670e651ac024bea9551bd.js'));
}
if (key === '4e76ad4411fbf58731cdad95d28e6fe0057fb4a97ffd54f193e52b111462552d') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '92a567041312ea4c7faa4dd5bcc74f73cd3b16dd721624d0bc68d1704138abe5') {
pending.push(import('./chunks/chunk-4f16ee624545500a5dde991be4f07a661d86951bbc2c07a010daabbd423b1909.js'));
}
if (key === 'becc589ccd4f7ac5e6f13c45eecc05f61d67ce57f585f1655800354ff4b55f3c') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '1ac8bd8d734d2603947b1db0616ea4dae4ce691a5264f5c9aeafcaa897e0a872') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '391ac9fb4bd95bc899c5911c48a6f3b549b118923653444f5ab50acddfb6f291') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'a4eeeab53770801e478b15e6b179e5689afd43fc753f347e0c51ce934bd28a6c') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === 'ffd87f879398d3b6942e852eda9b64e28a124c8a61938c867efb360a5cf1d32e') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '81bbe2e11b6af26d0d292e2e18bde37546d5b9ec24f4f4f78df2bc9f9c21f431') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '8904207b9d538b9eedfaaefd8e82d3415de8513bda9d6bb76f4012f0f336d200') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
}
if (key === '3665d7598c9ed4112997a0493fb890edf38d23d3bd9fcb0eb09bf3e045f5228b') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
if (key === 'c0816c2bfaa97d6f3e7eea83c5478186457bdc79cfe3f284c42e192d68607157') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '58cc18f5518623050c6a99d327dd540140b9b0dca851a76a70e688291f661e11') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
if (key === 'a886fd99e05dd2c5ce3e4b643dc8d6d29189dee784fa78678d8ab4fcb89216c0') {
pending.push(import('./chunks/chunk-4643e5b30878e982c301927c78b86af508e91d91560341ef83fa0e6bf79dedee.js'));
}
if (key === '89c2914ed5d19860240c0c1d3dba174616dc452c4ba8ae039f016cf9592e9432') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '2062a3f35e8fdb051e9362a8a8895d80ef719832e9394babcbaab3aac56d4f0e') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === 'e9df10b3be58513bb6452e4dbdce31e0b1dc33868fbba54ee72e82089cf39adf') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
}
if (key === '92a567041312ea4c7faa4dd5bcc74f73cd3b16dd721624d0bc68d1704138abe5') {
pending.push(import('./chunks/chunk-4f16ee624545500a5dde991be4f07a661d86951bbc2c07a010daabbd423b1909.js'));
}
if (key === '58cc18f5518623050c6a99d327dd540140b9b0dca851a76a70e688291f661e11') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
}
if (key === '5d710852587ce9ebabfac9ed950f6b11bc3a87d96860d4efdfb61dab7ae54091') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'e5db1fd1f39047ab2857e9ef118681c3f831f39efbbb2a6f000e9475b77444e5') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
}
if (key === '4e356c0939a28ab8766b0375ca6cb478b6163eb9ad80745a9e2f2fc80997b6a2') {
pending.push(import('./chunks/chunk-82d1654bda3835e43a2a0c9a2e52925f12dc4a2fcd20b5f40603dbbe6eb1ff23.js'));
}
if (key === 'a4eeeab53770801e478b15e6b179e5689afd43fc753f347e0c51ce934bd28a6c') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === '1ac8bd8d734d2603947b1db0616ea4dae4ce691a5264f5c9aeafcaa897e0a872') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '9f40817b690e11a5b23a3159bb774f15430c23768f26dc0d15efccc3d65223ac') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === 'dca37e6961f625182e78a722a61c0eb9b8a2357b5e787fe616fe5993c2db5133') {
pending.push(import('./chunks/chunk-dbbf8c73fe9c2c76fb9306f96bfa7ff293eff804705670e651ac024bea9551bd.js'));
}
if (key === '96ecac798fbbe91ef146ac4a25f5c31827427ca0f106ba66e63fc1fd6c27b83d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '4e76ad4411fbf58731cdad95d28e6fe0057fb4a97ffd54f193e52b111462552d') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '53ff1588255d7e5486eb67452c8d9c43baea0eecd9bd509fd7f0c55b3cccaa0d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'ac7af13a0805d3ce8a287e9d860521c82aaf55d2c448ce3f62a85d44216a8189') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '3e87cbb0d40d50da9c3b69d0dada85fe9b7f2f4bae2b79c8f0408a798b120549') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === '68a5f871903ca703f0fac8dd0072e1bfc082ffa14aa445026be6e1eb6cfe1bd0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '28b5e9145505152a4dbd9600977b8177d3a161906581ca5a1a923affc812a761') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === 'ffd87f879398d3b6942e852eda9b64e28a124c8a61938c867efb360a5cf1d32e') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'becc589ccd4f7ac5e6f13c45eecc05f61d67ce57f585f1655800354ff4b55f3c') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '0ca48a0e12f1dbf4945f761a93a7df202b2908327a63c52f2f060559c2bcc7f0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'e9df10b3be58513bb6452e4dbdce31e0b1dc33868fbba54ee72e82089cf39adf') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
if (key === '3665d7598c9ed4112997a0493fb890edf38d23d3bd9fcb0eb09bf3e045f5228b') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'bfac19b5aab9cd5a47ff4a66f2a839ebbb4889867824be809c5dc3a3d47f94b8') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '2b0ca0e51ded6027d3f9e464513210d5503ab2a9bc532de5cfc81d78a58f422f') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '391ac9fb4bd95bc899c5911c48a6f3b549b118923653444f5ab50acddfb6f291') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '39b4a07b2b07a780f8ac9d2f7cc855e3b78ec60465d9d808690466c1f0bea792') {
pending.push(import('./chunks/chunk-9067a52cbc57d972c6155501cef5bd27a816f0c7adf6390a603c7b4e9bbddce3.js'));
}
return Promise.all(pending);
}
@@ -7,113 +7,113 @@ import 'Frontend/generated/jar-resources/ReactRouterOutletElement.tsx';
const loadOnDemand = (key) => {
const pending = [];
if (key === '9f40817b690e11a5b23a3159bb774f15430c23768f26dc0d15efccc3d65223ac') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '2140ca6af7e9a5ff94d8a66b6e5a23e6d184ef7901ca73d33b3c30f74f94708a') {
pending.push(import('./chunks/chunk-eab035454a058f437d12e5ccf64ef647181029b965d466c829f5a569b2865dd3.js'));
}
if (key === 'c5f987a4896c791d13aeb6a03a4783ff03df304750a7db930a18d399dba31509') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'b4afd0c0906e26b51836d41720e1b8d91a7cacf0fd42e089f1e0fbc2ee27a5bb') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'a886fd99e05dd2c5ce3e4b643dc8d6d29189dee784fa78678d8ab4fcb89216c0') {
pending.push(import('./chunks/chunk-4643e5b30878e982c301927c78b86af508e91d91560341ef83fa0e6bf79dedee.js'));
}
if (key === 'c0816c2bfaa97d6f3e7eea83c5478186457bdc79cfe3f284c42e192d68607157') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '803ed44611ffeb1bcb1f604f267f09af48ef8a5bc8d765e481b67ed59f9b880a') {
pending.push(import('./chunks/chunk-5f54f3be0c0d908c0477e60450f72fbb60bfa31e84e7d18b39841a003d995f86.js'));
}
if (key === '96ecac798fbbe91ef146ac4a25f5c31827427ca0f106ba66e63fc1fd6c27b83d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '28b5e9145505152a4dbd9600977b8177d3a161906581ca5a1a923affc812a761') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === '2062a3f35e8fdb051e9362a8a8895d80ef719832e9394babcbaab3aac56d4f0e') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === '39b4a07b2b07a780f8ac9d2f7cc855e3b78ec60465d9d808690466c1f0bea792') {
pending.push(import('./chunks/chunk-9067a52cbc57d972c6155501cef5bd27a816f0c7adf6390a603c7b4e9bbddce3.js'));
}
if (key === '4e356c0939a28ab8766b0375ca6cb478b6163eb9ad80745a9e2f2fc80997b6a2') {
pending.push(import('./chunks/chunk-82d1654bda3835e43a2a0c9a2e52925f12dc4a2fcd20b5f40603dbbe6eb1ff23.js'));
}
if (key === '53ff1588255d7e5486eb67452c8d9c43baea0eecd9bd509fd7f0c55b3cccaa0d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '83045a9760ea76fd534ed71ed553dc7cf2595a5d697e3c7bc55470d219770d05') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'ac7af13a0805d3ce8a287e9d860521c82aaf55d2c448ce3f62a85d44216a8189') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
if (key === '2140ca6af7e9a5ff94d8a66b6e5a23e6d184ef7901ca73d33b3c30f74f94708a') {
pending.push(import('./chunks/chunk-eab035454a058f437d12e5ccf64ef647181029b965d466c829f5a569b2865dd3.js'));
}
if (key === '5d710852587ce9ebabfac9ed950f6b11bc3a87d96860d4efdfb61dab7ae54091') {
if (key === '803ed44611ffeb1bcb1f604f267f09af48ef8a5bc8d765e481b67ed59f9b880a') {
pending.push(import('./chunks/chunk-5f54f3be0c0d908c0477e60450f72fbb60bfa31e84e7d18b39841a003d995f86.js'));
}
if (key === 'b4afd0c0906e26b51836d41720e1b8d91a7cacf0fd42e089f1e0fbc2ee27a5bb') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '2b0ca0e51ded6027d3f9e464513210d5503ab2a9bc532de5cfc81d78a58f422f') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '68a5f871903ca703f0fac8dd0072e1bfc082ffa14aa445026be6e1eb6cfe1bd0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'bfac19b5aab9cd5a47ff4a66f2a839ebbb4889867824be809c5dc3a3d47f94b8') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '3e87cbb0d40d50da9c3b69d0dada85fe9b7f2f4bae2b79c8f0408a798b120549') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === 'dca37e6961f625182e78a722a61c0eb9b8a2357b5e787fe616fe5993c2db5133') {
pending.push(import('./chunks/chunk-dbbf8c73fe9c2c76fb9306f96bfa7ff293eff804705670e651ac024bea9551bd.js'));
}
if (key === '4e76ad4411fbf58731cdad95d28e6fe0057fb4a97ffd54f193e52b111462552d') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '92a567041312ea4c7faa4dd5bcc74f73cd3b16dd721624d0bc68d1704138abe5') {
pending.push(import('./chunks/chunk-4f16ee624545500a5dde991be4f07a661d86951bbc2c07a010daabbd423b1909.js'));
}
if (key === 'becc589ccd4f7ac5e6f13c45eecc05f61d67ce57f585f1655800354ff4b55f3c') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '1ac8bd8d734d2603947b1db0616ea4dae4ce691a5264f5c9aeafcaa897e0a872') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '391ac9fb4bd95bc899c5911c48a6f3b549b118923653444f5ab50acddfb6f291') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'a4eeeab53770801e478b15e6b179e5689afd43fc753f347e0c51ce934bd28a6c') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === 'ffd87f879398d3b6942e852eda9b64e28a124c8a61938c867efb360a5cf1d32e') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '81bbe2e11b6af26d0d292e2e18bde37546d5b9ec24f4f4f78df2bc9f9c21f431') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '8904207b9d538b9eedfaaefd8e82d3415de8513bda9d6bb76f4012f0f336d200') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
}
if (key === '3665d7598c9ed4112997a0493fb890edf38d23d3bd9fcb0eb09bf3e045f5228b') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
if (key === 'c0816c2bfaa97d6f3e7eea83c5478186457bdc79cfe3f284c42e192d68607157') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '58cc18f5518623050c6a99d327dd540140b9b0dca851a76a70e688291f661e11') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
if (key === 'a886fd99e05dd2c5ce3e4b643dc8d6d29189dee784fa78678d8ab4fcb89216c0') {
pending.push(import('./chunks/chunk-4643e5b30878e982c301927c78b86af508e91d91560341ef83fa0e6bf79dedee.js'));
}
if (key === '89c2914ed5d19860240c0c1d3dba174616dc452c4ba8ae039f016cf9592e9432') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '2062a3f35e8fdb051e9362a8a8895d80ef719832e9394babcbaab3aac56d4f0e') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === 'e9df10b3be58513bb6452e4dbdce31e0b1dc33868fbba54ee72e82089cf39adf') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
}
if (key === '92a567041312ea4c7faa4dd5bcc74f73cd3b16dd721624d0bc68d1704138abe5') {
pending.push(import('./chunks/chunk-4f16ee624545500a5dde991be4f07a661d86951bbc2c07a010daabbd423b1909.js'));
}
if (key === '58cc18f5518623050c6a99d327dd540140b9b0dca851a76a70e688291f661e11') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
}
if (key === '5d710852587ce9ebabfac9ed950f6b11bc3a87d96860d4efdfb61dab7ae54091') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'e5db1fd1f39047ab2857e9ef118681c3f831f39efbbb2a6f000e9475b77444e5') {
pending.push(import('./chunks/chunk-94486ac490d7aebdfb2696122da529dc74cba54f50b75f3f737368bd86850d36.js'));
}
if (key === '4e356c0939a28ab8766b0375ca6cb478b6163eb9ad80745a9e2f2fc80997b6a2') {
pending.push(import('./chunks/chunk-82d1654bda3835e43a2a0c9a2e52925f12dc4a2fcd20b5f40603dbbe6eb1ff23.js'));
}
if (key === 'a4eeeab53770801e478b15e6b179e5689afd43fc753f347e0c51ce934bd28a6c') {
pending.push(import('./chunks/chunk-0980a344d761e100f78a8df513a682bdcc702314eb249c64b972cbe64fc2a813.js'));
}
if (key === '1ac8bd8d734d2603947b1db0616ea4dae4ce691a5264f5c9aeafcaa897e0a872') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '9f40817b690e11a5b23a3159bb774f15430c23768f26dc0d15efccc3d65223ac') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === 'dca37e6961f625182e78a722a61c0eb9b8a2357b5e787fe616fe5993c2db5133') {
pending.push(import('./chunks/chunk-dbbf8c73fe9c2c76fb9306f96bfa7ff293eff804705670e651ac024bea9551bd.js'));
}
if (key === '96ecac798fbbe91ef146ac4a25f5c31827427ca0f106ba66e63fc1fd6c27b83d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '4e76ad4411fbf58731cdad95d28e6fe0057fb4a97ffd54f193e52b111462552d') {
pending.push(import('./chunks/chunk-ba68801837253f4860e3f4374e9ae9e48ccba4ca6110cac47de37e40d7b6199e.js'));
}
if (key === '53ff1588255d7e5486eb67452c8d9c43baea0eecd9bd509fd7f0c55b3cccaa0d') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'ac7af13a0805d3ce8a287e9d860521c82aaf55d2c448ce3f62a85d44216a8189') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '3e87cbb0d40d50da9c3b69d0dada85fe9b7f2f4bae2b79c8f0408a798b120549') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === '68a5f871903ca703f0fac8dd0072e1bfc082ffa14aa445026be6e1eb6cfe1bd0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === '28b5e9145505152a4dbd9600977b8177d3a161906581ca5a1a923affc812a761') {
pending.push(import('./chunks/chunk-5e457c2d02d56b468106fc6b3ad37f1215d95af443e88a25314d583049fa7ada.js'));
}
if (key === 'ffd87f879398d3b6942e852eda9b64e28a124c8a61938c867efb360a5cf1d32e') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'becc589ccd4f7ac5e6f13c45eecc05f61d67ce57f585f1655800354ff4b55f3c') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '0ca48a0e12f1dbf4945f761a93a7df202b2908327a63c52f2f060559c2bcc7f0') {
pending.push(import('./chunks/chunk-79565f1f0670029d94da9f00948c9fc73575b3c6dc12ea07cca72303e68fbd57.js'));
}
if (key === 'e9df10b3be58513bb6452e4dbdce31e0b1dc33868fbba54ee72e82089cf39adf') {
pending.push(import('./chunks/chunk-34d02800587f0d3950a0cf1f566793c706accc702ca93d2f51ab25f74d29bd84.js'));
if (key === '3665d7598c9ed4112997a0493fb890edf38d23d3bd9fcb0eb09bf3e045f5228b') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === 'bfac19b5aab9cd5a47ff4a66f2a839ebbb4889867824be809c5dc3a3d47f94b8') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '2b0ca0e51ded6027d3f9e464513210d5503ab2a9bc532de5cfc81d78a58f422f') {
pending.push(import('./chunks/chunk-c2a7e008275ccefd2b71f714af29d0186f49edb012ac8081cb81d0a896594da6.js'));
}
if (key === '391ac9fb4bd95bc899c5911c48a6f3b549b118923653444f5ab50acddfb6f291') {
pending.push(import('./chunks/chunk-7eb0e92a81bb7e9cb5e0c25a28ae3459e5223c6322ff3569292a66f45a9990ae.js'));
}
if (key === '39b4a07b2b07a780f8ac9d2f7cc855e3b78ec60465d9d808690466c1f0bea792') {
pending.push(import('./chunks/chunk-9067a52cbc57d972c6155501cef5bd27a816f0c7adf6390a603c7b4e9bbddce3.js'));
}
return Promise.all(pending);
}
@@ -0,0 +1,32 @@
package de.thpeetz.kontor.data.media;
import de.thpeetz.kontor.data.common.AbstractEntity;
import jakarta.annotation.Nullable;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "url" }) })
public class MediaMusic extends AbstractEntity {
private String url;
private boolean review;
private boolean shouldDownload;
@Nullable
private String title;
@Nullable
private String fileName;
}
@@ -0,0 +1,32 @@
package de.thpeetz.kontor.repository.media;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import de.thpeetz.kontor.data.media.MediaMusic;
public interface MediaMusicRepository extends JpaRepository<MediaMusic, String> {
@Query("select m from MediaMusic m " +
"where lower(m.url) like lower(concat('%', :searchTerm, '%')) or lower(m.title) like lower(concat('%', :searchTerm, '%'))")
List<MediaMusic> search(@Param("searchTerm") String searchTerm);
List<MediaMusic> findByShouldDownload(Boolean shouldDownload);
List<MediaMusic> findByReview(Boolean review);
List<MediaMusic> findByReviewAndShouldDownload(Boolean review, Boolean shouldDownload);
MediaMusic findByUrl(String url);
@Query("select m from MediaMusic m " +
"where lower(m.url) like lower(concat('%', :searchTerm, '%')) or lower(m.title) like lower(concat('%', :searchTerm, '%')) "
+
"AND m.review=:review AND m.shouldDownload=:download")
List<MediaMusic> search(
@Param("searchTerm") String searchTerm,
@Param("review") boolean searchReview,
@Param("download") boolean searchDownload);
}