[DEV] work on uuid conversion
This commit is contained in:
parent
48ad545da1
commit
5e8b244ebd
@ -20,7 +20,7 @@
|
||||
<dependency>
|
||||
<groupId>kangaroo-and-rabbit</groupId>
|
||||
<artifactId>archidata</artifactId>
|
||||
<version>0.6.1</version>
|
||||
<version>0.6.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
|
@ -32,6 +32,7 @@ import org.kar.karideo.migration.Initialization;
|
||||
import org.kar.karideo.migration.Migration20230810;
|
||||
import org.kar.karideo.migration.Migration20231015;
|
||||
import org.kar.karideo.migration.Migration20231126;
|
||||
import org.kar.karideo.migration.Migration20240226;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -60,7 +61,7 @@ public class WebLauncher {
|
||||
migrationEngine.add(new Migration20230810());
|
||||
migrationEngine.add(new Migration20231015());
|
||||
migrationEngine.add(new Migration20231126());
|
||||
//migrationEngine.add(new Migration20231126());
|
||||
migrationEngine.add(new Migration20240226());
|
||||
WebLauncher.LOGGER.info("Migrate the DB [START]");
|
||||
migrationEngine.migrateWaitAdmin(GlobalConfiguration.dbConfig);
|
||||
WebLauncher.LOGGER.info("Migrate the DB [STOP]");
|
||||
|
@ -2,6 +2,7 @@ package org.kar.karideo.api;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||
@ -31,20 +32,20 @@ import jakarta.ws.rs.core.Response;
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public class SeasonResource {
|
||||
static final Logger LOGGER = LoggerFactory.getLogger(SeasonResource.class);
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{id}")
|
||||
@RolesAllowed("USER")
|
||||
public static Season getWithId(@PathParam("id") final Long id) throws Exception {
|
||||
return DataAccess.get(Season.class, id);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@RolesAllowed("USER")
|
||||
public List<Season> get() throws Exception {
|
||||
return DataAccess.gets(Season.class);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{id}")
|
||||
@RolesAllowed("USER")
|
||||
@ -52,18 +53,18 @@ public class SeasonResource {
|
||||
public Season get(@PathParam("id") final Long id) throws Exception {
|
||||
return DataAccess.get(Season.class, id);
|
||||
}
|
||||
|
||||
|
||||
/* =============================================================================
|
||||
* ADMIN SECTION:
|
||||
* ============================================================================= */
|
||||
|
||||
|
||||
@POST
|
||||
@RolesAllowed("ADMIN")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public Season put(final String jsonRequest) throws Exception {
|
||||
return DataAccess.insertWithJson(Season.class, jsonRequest);
|
||||
}
|
||||
|
||||
|
||||
@PATCH
|
||||
@Path("{id}")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -72,7 +73,7 @@ public class SeasonResource {
|
||||
DataAccess.updateWithJson(Season.class, id, jsonRequest);
|
||||
return DataAccess.get(Season.class, id);
|
||||
}
|
||||
|
||||
|
||||
@DELETE
|
||||
@Path("{id}")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -80,7 +81,7 @@ public class SeasonResource {
|
||||
DataAccess.delete(Season.class, id);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
|
||||
@POST
|
||||
@Path("{id}/add_cover")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -89,7 +90,7 @@ public class SeasonResource {
|
||||
@FormDataParam("file") final FormDataContentDisposition fileMetaData) {
|
||||
return DataTools.uploadCover(Season.class, id, fileName, fileInputStream, fileMetaData);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{id}/rm_cover/{coverId}")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -97,8 +98,8 @@ public class SeasonResource {
|
||||
AddOnManyToMany.removeLink(Season.class, id, "cover", coverId);
|
||||
return Response.ok(DataAccess.get(Season.class, id)).build();
|
||||
}
|
||||
|
||||
public static Season getOrCreate(final String name, final Long seriesId) {
|
||||
|
||||
public static Season getOrCreate(final String name, final UUID seriesId) {
|
||||
try {
|
||||
Season out = DataAccess.getWhere(Season.class, new Condition(new QueryAnd(new QueryCondition("name", "=", name), new QueryCondition("parentId", "=", seriesId))));
|
||||
if (out == null) {
|
||||
@ -114,5 +115,5 @@ public class SeasonResource {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package org.kar.karideo.api;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||
@ -98,7 +99,7 @@ public class SeriesResource {
|
||||
return Response.ok(DataAccess.get(Series.class, id)).build();
|
||||
}
|
||||
|
||||
public static Series getOrCreate(final String name, final Long typeId) {
|
||||
public static Series getOrCreate(final String name, final UUID typeId) {
|
||||
try {
|
||||
Series out = DataAccess.getWhere(Series.class, new Condition(new QueryAnd(new QueryCondition("name", "=", name), new QueryCondition("parentId", "=", typeId))));
|
||||
if (out == null) {
|
||||
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||
@ -37,20 +38,20 @@ import jakarta.ws.rs.core.Response;
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public class VideoResource {
|
||||
static final Logger LOGGER = LoggerFactory.getLogger(VideoResource.class);
|
||||
|
||||
|
||||
@GET
|
||||
@RolesAllowed("USER")
|
||||
public List<Media> get() throws Exception {
|
||||
return DataAccess.gets(Media.class);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{id}")
|
||||
@RolesAllowed("USER")
|
||||
public Media get(@PathParam("id") final Long id) throws Exception {
|
||||
return DataAccess.get(Media.class, id);
|
||||
}
|
||||
|
||||
|
||||
@PATCH
|
||||
@Path("{id}")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -60,7 +61,7 @@ public class VideoResource {
|
||||
DataAccess.updateWithJson(Media.class, id, jsonRequest);
|
||||
return DataAccess.get(Media.class, id);
|
||||
}
|
||||
|
||||
|
||||
private String multipartCorrection(final String data) {
|
||||
if (data == null) {
|
||||
return null;
|
||||
@ -73,7 +74,7 @@ public class VideoResource {
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@POST
|
||||
@Path("/upload/")
|
||||
@RolesAllowed("ADMIN")
|
||||
@ -91,7 +92,7 @@ public class VideoResource {
|
||||
episode = multipartCorrection(episode);
|
||||
title = multipartCorrection(title);
|
||||
typeId = multipartCorrection(typeId);
|
||||
|
||||
|
||||
//public NodeSmall uploadFile(final FormDataMultiPart form) {
|
||||
System.out.println("Upload media file: " + fileMetaData);
|
||||
System.out.println(" - fileName: " + fileName);
|
||||
@ -107,7 +108,7 @@ public class VideoResource {
|
||||
if (typeId == null) {
|
||||
throw new InputException("typeId", "TypiId is not specified");
|
||||
}
|
||||
|
||||
|
||||
final long tmpUID = DataResource.getTmpDataId();
|
||||
final String sha512 = DataResource.saveTemporaryFile(fileInputStream, tmpUID);
|
||||
Data data = DataResource.getWithSha512(sha512);
|
||||
@ -145,7 +146,7 @@ public class VideoResource {
|
||||
if (series != null) {
|
||||
seriesNode = SeriesResource.getOrCreate(series, typeNode.id);
|
||||
}
|
||||
|
||||
|
||||
System.out.println(" ==> " + seriesNode);
|
||||
System.out.println("Find seasonNode");
|
||||
// get uid of season:
|
||||
@ -157,10 +158,10 @@ public class VideoResource {
|
||||
if (season != null) {
|
||||
seasonNode = SeasonResource.getOrCreate(season, seriesNode.id);
|
||||
}
|
||||
|
||||
|
||||
System.out.println(" ==> " + seasonNode);
|
||||
System.out.println("add media");
|
||||
|
||||
|
||||
final long uniqueSQLID = -1;
|
||||
try {
|
||||
final Media media = new Media();
|
||||
@ -195,28 +196,28 @@ public class VideoResource {
|
||||
throw new FailException("Catch Exception ==> check server logs");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@POST
|
||||
@Path("{id}/add_cover")
|
||||
@RolesAllowed("ADMIN")
|
||||
@Consumes({ MediaType.MULTIPART_FORM_DATA })
|
||||
public Response uploadCover(@PathParam("id") final Long id, @FormDataParam("fileName") final String fileName, @FormDataParam("file") final InputStream fileInputStream,
|
||||
public Response uploadCover(@PathParam("id") final UUID id, @FormDataParam("fileName") final String fileName, @FormDataParam("file") final InputStream fileInputStream,
|
||||
@FormDataParam("file") final FormDataContentDisposition fileMetaData) {
|
||||
return DataTools.uploadCover(Media.class, id, fileName, fileInputStream, fileMetaData);
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{id}/rm_cover/{coverId}")
|
||||
@RolesAllowed("ADMIN")
|
||||
public Response removeCover(@PathParam("id") final Long id, @PathParam("coverId") final Long coverId) throws Exception {
|
||||
public Response removeCover(@PathParam("id") final UUID id, @PathParam("coverId") final UUID coverId) throws Exception {
|
||||
AddOnManyToMany.removeLink(Media.class, id, "cover", coverId);
|
||||
return Response.ok(DataAccess.get(Media.class, id)).build();
|
||||
}
|
||||
|
||||
|
||||
@DELETE
|
||||
@Path("{id}")
|
||||
@RolesAllowed("ADMIN")
|
||||
public Response delete(@PathParam("id") final Long id) throws Exception {
|
||||
public Response delete(@PathParam("id") final UUID id) throws Exception {
|
||||
DataAccess.delete(Media.class, id);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
@ -34,16 +34,16 @@ public class Initialization extends MigrationSqlStep {
|
||||
|
||||
addAction("""
|
||||
INSERT INTO `type` (`id`, `name`, `description`) VALUES
|
||||
(1, 'Documentary', 'Documentary (animals, space, earth...)'),
|
||||
(2, 'Movie', 'Movie with real humans (film)'),
|
||||
(3, 'Animation', 'Animation movies (film)'),
|
||||
(4, 'Short movie', 'Small movies (less 2 minutes)'),
|
||||
(5, 'TV show', 'TV show for old peoples'),
|
||||
(6, 'Animation TV show', 'TV show for young peoples'),
|
||||
(7, 'Theater', 'Theater play'),
|
||||
(8, 'One man show', 'Recorded stand up'),
|
||||
(9, 'Concert', 'Recorded concert'),
|
||||
(10, 'Opera', 'Recorded opera');
|
||||
(UUID_TO_BIN('15237fd7-d4ee-11ee-a8dd-02420a030203'), 'Documentary', 'Documentary (animals, space, earth...)'),
|
||||
(UUID_TO_BIN('553146c1-d4ee-11ee-a8dd-02420a030203'), 'Movie', 'Movie with real humans (film)'),
|
||||
(UUID_TO_BIN('59c430a3-d4ee-11ee-a8dd-02420a030203'), 'Animation', 'Animation movies (film)'),
|
||||
(UUID_TO_BIN('5cd619e3-d4ee-11ee-a8dd-02420a030203'), 'Short movie', 'Small movies (less 2 minutes)'),
|
||||
(UUID_TO_BIN('5fbbf085-d4ee-11ee-a8dd-02420a030203'), 'TV show', 'TV show for old peoples'),
|
||||
(UUID_TO_BIN('66dcb6ba-d4ee-11ee-a8dd-02420a030203'), 'Animation TV show', 'TV show for young peoples'),
|
||||
(UUID_TO_BIN('69ee5c15-d4ee-11ee-a8dd-02420a030203'), 'Theater', 'Theater play'),
|
||||
(UUID_TO_BIN('6ce72530-d4ee-11ee-a8dd-02420a030203'), 'One man show', 'Recorded stand up'),
|
||||
(UUID_TO_BIN('6ff1691a-d4ee-11ee-a8dd-02420a030203'), 'Concert', 'Recorded concert'),
|
||||
(UUID_TO_BIN('730815ef-d4ee-11ee-a8dd-02420a030203'), 'Opera', 'Recorded opera');
|
||||
""");
|
||||
// set start increment element to permit to add after default elements
|
||||
addAction("""
|
||||
|
44
back/src/org/kar/karideo/migration/Migration20240226.java
Normal file
44
back/src/org/kar/karideo/migration/Migration20240226.java
Normal file
@ -0,0 +1,44 @@
|
||||
package org.kar.karideo.migration;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.kar.archidata.dataAccess.DataAccess;
|
||||
import org.kar.archidata.dataAccess.options.AccessDeletedItems;
|
||||
import org.kar.archidata.dataAccess.options.OverrideTableName;
|
||||
import org.kar.archidata.migration.MigrationSqlStep;
|
||||
import org.kar.karideo.migration.model.UUIDConversion;
|
||||
|
||||
public class Migration20240226 extends MigrationSqlStep {
|
||||
|
||||
public static final int KARSO_INITIALISATION_ID = 1;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "migration-2024-02-26: convert base with UUID";
|
||||
}
|
||||
|
||||
public Migration20240226() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
|
||||
// update migration update (last one)
|
||||
addAction("""
|
||||
ALTER TABLE `media` ADD `uuid` binary(16) AFTER `id`;
|
||||
""");
|
||||
addAction(() -> {
|
||||
final List<UUIDConversion> medias = DataAccess.gets(UUIDConversion.class, new AccessDeletedItems(), new OverrideTableName("media"));
|
||||
for (final UUIDConversion elem: medias) {
|
||||
elem.uuid = UUID.randomUUID();
|
||||
}
|
||||
for (final UUIDConversion elem: medias) {
|
||||
DataAccess.update(elem, elem.id, List.of("uuid"), new OverrideTableName("media"));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
11
back/src/org/kar/karideo/migration/model/UUIDConversion.java
Normal file
11
back/src/org/kar/karideo/migration/model/UUIDConversion.java
Normal file
@ -0,0 +1,11 @@
|
||||
package org.kar.karideo.migration.model;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
public class UUIDConversion {
|
||||
@Id
|
||||
public Long id = null;
|
||||
public UUID uuid = null;
|
||||
}
|
@ -1,16 +1,17 @@
|
||||
package org.kar.karideo.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.kar.archidata.annotation.DataJson;
|
||||
import org.kar.archidata.model.Data;
|
||||
import org.kar.archidata.model.GenericDataSoftDelete;
|
||||
import org.kar.archidata.model.UUIDGenericDataSoftDelete;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.ManyToMany;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.Table;
|
||||
|
||||
@ -19,7 +20,7 @@ import jakarta.persistence.Table;
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
//@SQLDelete(sql = "UPDATE table_product SET deleted = true WHERE id=?")
|
||||
//@Where(clause = "deleted=false")
|
||||
public class Media extends GenericDataSoftDelete {
|
||||
public class Media extends UUIDGenericDataSoftDelete {
|
||||
// Name of the media (this represent the title)
|
||||
@Column(nullable = false, length = 0)
|
||||
public String name;
|
||||
@ -29,16 +30,16 @@ public class Media extends GenericDataSoftDelete {
|
||||
// Foreign Key Id of the data
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Data.class)
|
||||
@Column(nullable = false)
|
||||
public Long dataId;
|
||||
public UUID dataId;
|
||||
// Type of the media")
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Type.class)
|
||||
public Long typeId;
|
||||
public UUID typeId;
|
||||
// Series reference of the media
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Series.class)
|
||||
public Long seriesId;
|
||||
public UUID seriesId;
|
||||
// Saison reference of the media
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Season.class)
|
||||
public Long seasonId;
|
||||
public UUID seasonId;
|
||||
// Episide Id
|
||||
public Integer episode;
|
||||
// ")
|
||||
@ -48,6 +49,6 @@ public class Media extends GenericDataSoftDelete {
|
||||
// Limitation Age of the media
|
||||
public Integer ageLimit;
|
||||
// List of Id of the specific covers
|
||||
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Data.class)
|
||||
public List<Long> covers = null;
|
||||
@DataJson()
|
||||
public List<UUID> covers = null;
|
||||
}
|
||||
|
@ -1,24 +1,24 @@
|
||||
package org.kar.karideo.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.kar.archidata.annotation.DataIfNotExists;
|
||||
import org.kar.archidata.model.Data;
|
||||
import org.kar.archidata.model.GenericDataSoftDelete;
|
||||
import org.kar.archidata.annotation.DataJson;
|
||||
import org.kar.archidata.model.UUIDGenericDataSoftDelete;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.ManyToMany;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.Table;
|
||||
|
||||
@Table(name = "season")
|
||||
@DataIfNotExists
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class Season extends GenericDataSoftDelete {
|
||||
public class Season extends UUIDGenericDataSoftDelete {
|
||||
@Column(nullable = false, length = 0)
|
||||
@Schema(description = "Name of the media (this represent the title)")
|
||||
public String name;
|
||||
@ -28,8 +28,8 @@ public class Season extends GenericDataSoftDelete {
|
||||
@Column(nullable = false)
|
||||
@Schema(description = "series parent ID")
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Series.class)
|
||||
public Long parentId;
|
||||
public UUID parentId;
|
||||
@Schema(description = "List of Id of the sopecific covers")
|
||||
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Data.class)
|
||||
public List<Long> covers = null;
|
||||
@DataJson()
|
||||
public List<UUID> covers = null;
|
||||
}
|
@ -1,24 +1,24 @@
|
||||
package org.kar.karideo.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.kar.archidata.annotation.DataIfNotExists;
|
||||
import org.kar.archidata.model.Data;
|
||||
import org.kar.archidata.model.GenericDataSoftDelete;
|
||||
import org.kar.archidata.annotation.DataJson;
|
||||
import org.kar.archidata.model.UUIDGenericDataSoftDelete;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.ManyToMany;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.Table;
|
||||
|
||||
@Table(name = "series")
|
||||
@DataIfNotExists
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class Series extends GenericDataSoftDelete {
|
||||
public class Series extends UUIDGenericDataSoftDelete {
|
||||
@Column(nullable = false, length = 0)
|
||||
@Schema(description = "Name of the media (this represent the title)")
|
||||
public String name;
|
||||
@ -28,8 +28,8 @@ public class Series extends GenericDataSoftDelete {
|
||||
@Column(nullable = false)
|
||||
@Schema(description = "series parent ID")
|
||||
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Type.class)
|
||||
public Long parentId;
|
||||
public UUID parentId;
|
||||
@Schema(description = "List of Id of the sopecific covers")
|
||||
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Data.class)
|
||||
public List<Long> covers = null;
|
||||
@DataJson()
|
||||
public List<UUID> covers = null;
|
||||
}
|
||||
|
@ -1,23 +1,22 @@
|
||||
package org.kar.karideo.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.kar.archidata.annotation.DataIfNotExists;
|
||||
import org.kar.archidata.model.Data;
|
||||
import org.kar.archidata.model.GenericDataSoftDelete;
|
||||
import org.kar.archidata.annotation.DataJson;
|
||||
import org.kar.archidata.model.UUIDGenericDataSoftDelete;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.ManyToMany;
|
||||
import jakarta.persistence.Table;
|
||||
|
||||
@Table(name = "type")
|
||||
@DataIfNotExists
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class Type extends GenericDataSoftDelete {
|
||||
public class Type extends UUIDGenericDataSoftDelete {
|
||||
@Column(nullable = false, length = 0)
|
||||
@Schema(description = "Name of the media (this represent the title)")
|
||||
public String name;
|
||||
@ -25,6 +24,6 @@ public class Type extends GenericDataSoftDelete {
|
||||
@Schema(description = "Description of the media")
|
||||
public String description;
|
||||
@Schema(description = "List of Id of the sopecific covers")
|
||||
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Data.class)
|
||||
public List<Long> covers = null;
|
||||
@DataJson()
|
||||
public List<UUID> covers = null;
|
||||
}
|
||||
|
@ -1,88 +1,112 @@
|
||||
{
|
||||
"$schema" : "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version" : 1,
|
||||
"newProjectRoot" : "projects",
|
||||
"defaultProject" : "karideo",
|
||||
"projects" : {
|
||||
"karideo" : {
|
||||
"root" : "",
|
||||
"sourceRoot" : "src",
|
||||
"projectType" : "application",
|
||||
"architect" : {
|
||||
"build" : {
|
||||
"builder" : "@angular-devkit/build-angular:browser",
|
||||
"options" : {
|
||||
"outputPath" : "dist",
|
||||
"index" : "src/index.html",
|
||||
"main" : "src/main.ts",
|
||||
"tsConfig" : "src/tsconfig.app.json",
|
||||
"polyfills" : "src/polyfills.ts",
|
||||
"assets" : [ "src/assets", "src/favicon.ico" ],
|
||||
"styles" : [ "src/styles.less", "src/generic_page.less", "src/theme.color.blue.less", "src/theme.checkbox.less", "src/theme.modal.less" ],
|
||||
"scripts" : [ ]
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version": 1,
|
||||
"newProjectRoot": "projects",
|
||||
"defaultProject": "karideo",
|
||||
"projects": {
|
||||
"karideo": {
|
||||
"root": "",
|
||||
"sourceRoot": "src",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-angular:browser",
|
||||
"options": {
|
||||
"outputPath": "dist",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
"tsConfig": "src/tsconfig.app.json",
|
||||
"polyfills": [
|
||||
"zone.js"
|
||||
],
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico"
|
||||
],
|
||||
"styles": [
|
||||
"src/styles.less",
|
||||
"src/generic_page.less",
|
||||
"src/theme.color.blue.less",
|
||||
"src/theme.checkbox.less",
|
||||
"src/theme.modal.less"
|
||||
],
|
||||
"scripts": []
|
||||
},
|
||||
"configurations" : {
|
||||
"production" : {
|
||||
"optimization" : true,
|
||||
"outputHashing" : "all",
|
||||
"sourceMap" : false,
|
||||
"namedChunks" : false,
|
||||
"aot" : true,
|
||||
"extractLicenses" : true,
|
||||
"vendorChunk" : false,
|
||||
"buildOptimizer" : true,
|
||||
"fileReplacements" : [ {
|
||||
"replace" : "src/environments/environment.ts",
|
||||
"with" : "src/environments/environment.prod.ts"
|
||||
} ]
|
||||
"configurations": {
|
||||
"production": {
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"namedChunks": false,
|
||||
"aot": true,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"develop" : {
|
||||
"optimization" : false,
|
||||
"outputHashing" : "none",
|
||||
"sourceMap" : true,
|
||||
"namedChunks" : true,
|
||||
"aot" : true,
|
||||
"extractLicenses" : true,
|
||||
"vendorChunk" : true,
|
||||
"buildOptimizer" : false
|
||||
"develop": {
|
||||
"optimization": false,
|
||||
"outputHashing": "none",
|
||||
"sourceMap": true,
|
||||
"namedChunks": true,
|
||||
"aot": true,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": true,
|
||||
"buildOptimizer": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve" : {
|
||||
"builder" : "@angular-devkit/build-angular:dev-server",
|
||||
"options" : {
|
||||
"browserTarget" : "karideo:build"
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "karideo:build"
|
||||
},
|
||||
"configurations" : {
|
||||
"production" : {
|
||||
"browserTarget" : "karideo:build:production"
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "karideo:build:production"
|
||||
},
|
||||
"develop" : {
|
||||
"browserTarget" : "karideo:build:develop"
|
||||
"develop": {
|
||||
"browserTarget": "karideo:build:develop"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extract-i18n" : {
|
||||
"builder" : "@angular-devkit/build-angular:extract-i18n",
|
||||
"options" : {
|
||||
"browserTarget" : "karideo:build"
|
||||
"extract-i18n": {
|
||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||
"options": {
|
||||
"browserTarget": "karideo:build"
|
||||
}
|
||||
},
|
||||
"test" : {
|
||||
"builder" : "@angular-devkit/build-angular:karma",
|
||||
"options" : {
|
||||
"main" : "src/test.ts",
|
||||
"karmaConfig" : "./karma.conf.js",
|
||||
"polyfills" : "src/polyfills.ts",
|
||||
"tsConfig" : "src/tsconfig.spec.json",
|
||||
"scripts" : [ ],
|
||||
"styles" : [ "src/styles.less", "src/generic_page.less", "src/theme.color.blue.less", "src/theme.checkbox.less", "src/theme.modal.less" ],
|
||||
"assets" : [ "src/assets", "src/favicon.ico" ]
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "src/test.ts",
|
||||
"karmaConfig": "./karma.conf.js",
|
||||
"polyfills": [
|
||||
"zone.js"
|
||||
],
|
||||
"tsConfig": "src/tsconfig.spec.json",
|
||||
"scripts": [],
|
||||
"styles": [
|
||||
"src/styles.less",
|
||||
"src/generic_page.less",
|
||||
"src/theme.color.blue.less",
|
||||
"src/theme.checkbox.less",
|
||||
"src/theme.modal.less"
|
||||
],
|
||||
"assets": [
|
||||
"src/assets",
|
||||
"src/favicon.ico"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lint" : {
|
||||
"builder" : "@angular-eslint/builder:lint",
|
||||
"options" : {
|
||||
"lint": {
|
||||
"builder": "@angular-eslint/builder:lint",
|
||||
"options": {
|
||||
"fix": true,
|
||||
"eslintConfig": ".eslintrc.js",
|
||||
"lintFilePatterns": [
|
||||
@ -91,44 +115,53 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"TTTTTTlint" : {
|
||||
"builder" : "@angular-devkit/build-angular:tslint",
|
||||
"options" : {
|
||||
"tsConfig" : [ "src/tsconfig.app.json", "src/tsconfig.spec.json" ],
|
||||
"exclude" : [ "**/node_modules/**" ]
|
||||
"TTTTTTlint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"src/tsconfig.app.json",
|
||||
"src/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"karideo-e2e" : {
|
||||
"root" : "e2e",
|
||||
"sourceRoot" : "e2e",
|
||||
"projectType" : "application",
|
||||
"architect" : {
|
||||
"e2e" : {
|
||||
"builder" : "@angular-devkit/build-angular:protractor",
|
||||
"options" : {
|
||||
"protractorConfig" : "./protractor.conf.js",
|
||||
"devServerTarget" : "karideo:serve"
|
||||
"karideo-e2e": {
|
||||
"root": "e2e",
|
||||
"sourceRoot": "e2e",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"e2e": {
|
||||
"builder": "@angular-devkit/build-angular:protractor",
|
||||
"options": {
|
||||
"protractorConfig": "./protractor.conf.js",
|
||||
"devServerTarget": "karideo:serve"
|
||||
}
|
||||
},
|
||||
"lint" : {
|
||||
"builder" : "@angular-devkit/build-angular:tslint",
|
||||
"options" : {
|
||||
"tsConfig" : [ "e2e/tsconfig.e2e.json" ],
|
||||
"exclude" : [ "**/node_modules/**" ]
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"e2e/tsconfig.e2e.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"schematics" : {
|
||||
"@schematics/angular:component" : {
|
||||
"prefix" : "app",
|
||||
"style" : "less"
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"prefix": "app",
|
||||
"style": "less"
|
||||
},
|
||||
"@schematics/angular:directive" : {
|
||||
"prefix" : "app"
|
||||
"@schematics/angular:directive": {
|
||||
"prefix": "app"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
import { isNumberFinite, isString, isOptionalOf, isNumber } from "common/utils";
|
||||
import { isNodeData, NodeData } from "common/model/node";
|
||||
import { isNumberFinite, isNumber } from "common/utils";
|
||||
|
||||
|
||||
export interface UserMediaAdvancement {
|
||||
|
@ -74,7 +74,7 @@ export class VideoScene implements OnInit {
|
||||
timeLeft: number = 10;
|
||||
interval = null;
|
||||
|
||||
userMetaData: UserMediaAdvancement & { percentDisplay: number } = undefined
|
||||
userMetaData: UserMediaAdvancement & { percentDisplay?: number } = undefined
|
||||
|
||||
previousTime: number = 0;
|
||||
startPlayingTime: number = undefined;
|
||||
|
Loading…
Reference in New Issue
Block a user