From e239b4d8d1b994f78fbf162b67712a3d5d27e8d3 Mon Sep 17 00:00:00 2001 From: siarhei_hrabko Date: Wed, 26 Jun 2024 06:17:10 +0300 Subject: [PATCH] EPMRPP-88736 implement dao for analytics data --- project-properties.gradle | 3 +- .../dao/AnalyticsDataRepository.java | 25 ++ .../entity/analytics/AnalyticsData.java | 66 +++++ .../epam/ta/reportportal/jooq/Indexes.java | 3 + .../epam/ta/reportportal/jooq/JPublic.java | 10 +- .../com/epam/ta/reportportal/jooq/Keys.java | 6 + .../epam/ta/reportportal/jooq/Sequences.java | 5 + .../com/epam/ta/reportportal/jooq/Tables.java | 6 + .../jooq/tables/JAnalyticsData.java | 174 +++++++++++++ .../tables/records/JAnalyticsDataRecord.java | 230 ++++++++++++++++++ .../dao/AnalyticsDataRepositoryTest.java | 36 +++ 11 files changed, 562 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/epam/ta/reportportal/dao/AnalyticsDataRepository.java create mode 100644 src/main/java/com/epam/ta/reportportal/entity/analytics/AnalyticsData.java create mode 100644 src/main/java/com/epam/ta/reportportal/jooq/tables/JAnalyticsData.java create mode 100644 src/main/java/com/epam/ta/reportportal/jooq/tables/records/JAnalyticsDataRecord.java create mode 100644 src/test/java/com/epam/ta/reportportal/dao/AnalyticsDataRepositoryTest.java diff --git a/project-properties.gradle b/project-properties.gradle index 61a882ae1..365bff16e 100755 --- a/project-properties.gradle +++ b/project-properties.gradle @@ -10,7 +10,7 @@ project.ext { releaseMode = project.hasProperty("releaseMode") hasDBSchema = project.hasProperty("DB_SCHEMA_POSTGRES") scriptsUrl = commonScriptsUrl + (releaseMode ? getProperty('scripts.version') : 'develop') - migrationsUrl = migrationsScriptsUrl + (releaseMode ? getProperty('migrations.version') : 'develop') + migrationsUrl = migrationsScriptsUrl + (releaseMode ? getProperty('migrations.version') : 'EPMRPP-88736') //TODO refactor with archive download testScriptsSrc = [ @@ -84,6 +84,7 @@ project.ext { (migrationsUrl + '/migrations/84_organization_tables.up.sql') : 'V084__organization_tables.sql', (migrationsUrl + '/migrations/86_notication_update.up.sql') : 'V086__notication_update.sql', (migrationsUrl + '/migrations/88_add_retention_policy_launch.up.sql') : 'V088__add_retention_policy_launch.sql', + (migrationsUrl + '/migrations/90_analytics_data_table.up.sql') : 'V090__analytics_data_table.sql', ] excludeTests = [ diff --git a/src/main/java/com/epam/ta/reportportal/dao/AnalyticsDataRepository.java b/src/main/java/com/epam/ta/reportportal/dao/AnalyticsDataRepository.java new file mode 100644 index 000000000..95f90e893 --- /dev/null +++ b/src/main/java/com/epam/ta/reportportal/dao/AnalyticsDataRepository.java @@ -0,0 +1,25 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.ta.reportportal.dao; + +import org.springframework.stereotype.Repository; +import com.epam.ta.reportportal.entity.analytics.AnalyticsData; + +@Repository +public interface AnalyticsDataRepository extends ReportPortalRepository { + +} diff --git a/src/main/java/com/epam/ta/reportportal/entity/analytics/AnalyticsData.java b/src/main/java/com/epam/ta/reportportal/entity/analytics/AnalyticsData.java new file mode 100644 index 000000000..d376e29cd --- /dev/null +++ b/src/main/java/com/epam/ta/reportportal/entity/analytics/AnalyticsData.java @@ -0,0 +1,66 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.ta.reportportal.entity.analytics; + +import com.epam.ta.reportportal.entity.Metadata; +import java.io.Serializable; +import java.time.Instant; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.Type; +import org.hibernate.annotations.TypeDef; +import org.springframework.data.annotation.CreatedDate; + +/** + * @author Siarhei Hrabko + */ +@Entity +@TypeDef(name = "meta", typeClass = Metadata.class) +@Table(name = "analytics_data", schema = "public") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class AnalyticsData implements Serializable { + + private static final long serialVersionUID = 923392982L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", unique = true, nullable = false, precision = 64) + private Long id; + + @Column(name = "type") + private String type; + + @Column(name = "metadata") + @Type(type = "meta") + private Metadata metadata; + + @Column(name = "created_at", nullable = false) + @CreatedDate + private Instant createdAt; + +} diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java b/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java index d6ca58f49..0ee7f7402 100644 --- a/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java +++ b/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java @@ -5,6 +5,7 @@ import com.epam.ta.reportportal.jooq.tables.JActivity; +import com.epam.ta.reportportal.jooq.tables.JAnalyticsData; import com.epam.ta.reportportal.jooq.tables.JApiKeys; import com.epam.ta.reportportal.jooq.tables.JAttachment; import com.epam.ta.reportportal.jooq.tables.JAttachmentDeletion; @@ -88,6 +89,7 @@ public class Indexes { public static final Index ACTIVITY_OBJECT_IDX = Indexes0.ACTIVITY_OBJECT_IDX; public static final Index ACTIVITY_PK = Indexes0.ACTIVITY_PK; public static final Index ACTIVITY_PROJECT_IDX = Indexes0.ACTIVITY_PROJECT_IDX; + public static final Index ANALYTICS_DATA_PKEY = Indexes0.ANALYTICS_DATA_PKEY; public static final Index API_KEYS_PKEY = Indexes0.API_KEYS_PKEY; public static final Index HASH_API_KEYS_IDX = Indexes0.HASH_API_KEYS_IDX; public static final Index USERS_API_KEYS_UNIQUE = Indexes0.USERS_API_KEYS_UNIQUE; @@ -227,6 +229,7 @@ private static class Indexes0 { public static Index ACTIVITY_OBJECT_IDX = Internal.createIndex("activity_object_idx", JActivity.ACTIVITY, new OrderField[] { JActivity.ACTIVITY.OBJECT_ID }, false); public static Index ACTIVITY_PK = Internal.createIndex("activity_pk", JActivity.ACTIVITY, new OrderField[] { JActivity.ACTIVITY.ID }, true); public static Index ACTIVITY_PROJECT_IDX = Internal.createIndex("activity_project_idx", JActivity.ACTIVITY, new OrderField[] { JActivity.ACTIVITY.PROJECT_ID }, false); + public static Index ANALYTICS_DATA_PKEY = Internal.createIndex("analytics_data_pkey", JAnalyticsData.ANALYTICS_DATA, new OrderField[] { JAnalyticsData.ANALYTICS_DATA.ID }, true); public static Index API_KEYS_PKEY = Internal.createIndex("api_keys_pkey", JApiKeys.API_KEYS, new OrderField[] { JApiKeys.API_KEYS.ID }, true); public static Index HASH_API_KEYS_IDX = Internal.createIndex("hash_api_keys_idx", JApiKeys.API_KEYS, new OrderField[] { JApiKeys.API_KEYS.HASH }, false); public static Index USERS_API_KEYS_UNIQUE = Internal.createIndex("users_api_keys_unique", JApiKeys.API_KEYS, new OrderField[] { JApiKeys.API_KEYS.NAME, JApiKeys.API_KEYS.USER_ID }, true); diff --git a/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java b/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java index ac71b3270..d506f663a 100644 --- a/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java +++ b/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java @@ -5,6 +5,7 @@ import com.epam.ta.reportportal.jooq.tables.JActivity; +import com.epam.ta.reportportal.jooq.tables.JAnalyticsData; import com.epam.ta.reportportal.jooq.tables.JApiKeys; import com.epam.ta.reportportal.jooq.tables.JAttachment; import com.epam.ta.reportportal.jooq.tables.JAttachmentDeletion; @@ -90,7 +91,7 @@ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class JPublic extends SchemaImpl { - private static final long serialVersionUID = 286849201; + private static final long serialVersionUID = 846466812; /** * The reference instance of public @@ -102,6 +103,11 @@ public class JPublic extends SchemaImpl { */ public final JActivity ACTIVITY = com.epam.ta.reportportal.jooq.tables.JActivity.ACTIVITY; + /** + * The table public.analytics_data. + */ + public final JAnalyticsData ANALYTICS_DATA = com.epam.ta.reportportal.jooq.tables.JAnalyticsData.ANALYTICS_DATA; + /** * The table public.api_keys. */ @@ -421,6 +427,7 @@ public final List> getSequences() { private final List> getSequences0() { return Arrays.>asList( Sequences.ACTIVITY_ID_SEQ, + Sequences.ANALYTICS_DATA_ID_SEQ, Sequences.API_KEYS_ID_SEQ, Sequences.ATTACHMENT_ID_SEQ, Sequences.ATTRIBUTE_ID_SEQ, @@ -468,6 +475,7 @@ public final List> getTables() { private final List> getTables0() { return Arrays.>asList( JActivity.ACTIVITY, + JAnalyticsData.ANALYTICS_DATA, JApiKeys.API_KEYS, JAttachment.ATTACHMENT, JAttachmentDeletion.ATTACHMENT_DELETION, diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Keys.java b/src/main/java/com/epam/ta/reportportal/jooq/Keys.java index c7c1a0fe8..28e54acf9 100644 --- a/src/main/java/com/epam/ta/reportportal/jooq/Keys.java +++ b/src/main/java/com/epam/ta/reportportal/jooq/Keys.java @@ -5,6 +5,7 @@ import com.epam.ta.reportportal.jooq.tables.JActivity; +import com.epam.ta.reportportal.jooq.tables.JAnalyticsData; import com.epam.ta.reportportal.jooq.tables.JApiKeys; import com.epam.ta.reportportal.jooq.tables.JAttachment; import com.epam.ta.reportportal.jooq.tables.JAttachmentDeletion; @@ -60,6 +61,7 @@ import com.epam.ta.reportportal.jooq.tables.JWidget; import com.epam.ta.reportportal.jooq.tables.JWidgetFilter; import com.epam.ta.reportportal.jooq.tables.records.JActivityRecord; +import com.epam.ta.reportportal.jooq.tables.records.JAnalyticsDataRecord; import com.epam.ta.reportportal.jooq.tables.records.JApiKeysRecord; import com.epam.ta.reportportal.jooq.tables.records.JAttachmentDeletionRecord; import com.epam.ta.reportportal.jooq.tables.records.JAttachmentRecord; @@ -142,6 +144,7 @@ public class Keys { // ------------------------------------------------------------------------- public static final Identity IDENTITY_ACTIVITY = Identities0.IDENTITY_ACTIVITY; + public static final Identity IDENTITY_ANALYTICS_DATA = Identities0.IDENTITY_ANALYTICS_DATA; public static final Identity IDENTITY_API_KEYS = Identities0.IDENTITY_API_KEYS; public static final Identity IDENTITY_ATTACHMENT = Identities0.IDENTITY_ATTACHMENT; public static final Identity IDENTITY_ATTRIBUTE = Identities0.IDENTITY_ATTRIBUTE; @@ -181,6 +184,7 @@ public class Keys { // ------------------------------------------------------------------------- public static final UniqueKey ACTIVITY_PK = UniqueKeys0.ACTIVITY_PK; + public static final UniqueKey ANALYTICS_DATA_PKEY = UniqueKeys0.ANALYTICS_DATA_PKEY; public static final UniqueKey API_KEYS_PKEY = UniqueKeys0.API_KEYS_PKEY; public static final UniqueKey USERS_API_KEYS_UNIQUE = UniqueKeys0.USERS_API_KEYS_UNIQUE; public static final UniqueKey ATTACHMENT_PK = UniqueKeys0.ATTACHMENT_PK; @@ -327,6 +331,7 @@ public class Keys { private static class Identities0 { public static Identity IDENTITY_ACTIVITY = Internal.createIdentity(JActivity.ACTIVITY, JActivity.ACTIVITY.ID); + public static Identity IDENTITY_ANALYTICS_DATA = Internal.createIdentity(JAnalyticsData.ANALYTICS_DATA, JAnalyticsData.ANALYTICS_DATA.ID); public static Identity IDENTITY_API_KEYS = Internal.createIdentity(JApiKeys.API_KEYS, JApiKeys.API_KEYS.ID); public static Identity IDENTITY_ATTACHMENT = Internal.createIdentity(JAttachment.ATTACHMENT, JAttachment.ATTACHMENT.ID); public static Identity IDENTITY_ATTRIBUTE = Internal.createIdentity(JAttribute.ATTRIBUTE, JAttribute.ATTRIBUTE.ID); @@ -364,6 +369,7 @@ private static class Identities0 { private static class UniqueKeys0 { public static final UniqueKey ACTIVITY_PK = Internal.createUniqueKey(JActivity.ACTIVITY, "activity_pk", JActivity.ACTIVITY.ID); + public static final UniqueKey ANALYTICS_DATA_PKEY = Internal.createUniqueKey(JAnalyticsData.ANALYTICS_DATA, "analytics_data_pkey", JAnalyticsData.ANALYTICS_DATA.ID); public static final UniqueKey API_KEYS_PKEY = Internal.createUniqueKey(JApiKeys.API_KEYS, "api_keys_pkey", JApiKeys.API_KEYS.ID); public static final UniqueKey USERS_API_KEYS_UNIQUE = Internal.createUniqueKey(JApiKeys.API_KEYS, "users_api_keys_unique", JApiKeys.API_KEYS.NAME, JApiKeys.API_KEYS.USER_ID); public static final UniqueKey ATTACHMENT_PK = Internal.createUniqueKey(JAttachment.ATTACHMENT, "attachment_pk", JAttachment.ATTACHMENT.ID); diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java b/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java index 6eb9a445b..e609623b8 100644 --- a/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java +++ b/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java @@ -28,6 +28,11 @@ public class Sequences { */ public static final Sequence ACTIVITY_ID_SEQ = new SequenceImpl("activity_id_seq", JPublic.PUBLIC, org.jooq.impl.SQLDataType.BIGINT.nullable(false)); + /** + * The sequence public.analytics_data_id_seq + */ + public static final Sequence ANALYTICS_DATA_ID_SEQ = new SequenceImpl("analytics_data_id_seq", JPublic.PUBLIC, org.jooq.impl.SQLDataType.BIGINT.nullable(false)); + /** * The sequence public.api_keys_id_seq */ diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Tables.java b/src/main/java/com/epam/ta/reportportal/jooq/Tables.java index 1c247af11..8ca679125 100644 --- a/src/main/java/com/epam/ta/reportportal/jooq/Tables.java +++ b/src/main/java/com/epam/ta/reportportal/jooq/Tables.java @@ -5,6 +5,7 @@ import com.epam.ta.reportportal.jooq.tables.JActivity; +import com.epam.ta.reportportal.jooq.tables.JAnalyticsData; import com.epam.ta.reportportal.jooq.tables.JApiKeys; import com.epam.ta.reportportal.jooq.tables.JAttachment; import com.epam.ta.reportportal.jooq.tables.JAttachmentDeletion; @@ -87,6 +88,11 @@ public class Tables { */ public static final JActivity ACTIVITY = JActivity.ACTIVITY; + /** + * The table public.analytics_data. + */ + public static final JAnalyticsData ANALYTICS_DATA = JAnalyticsData.ANALYTICS_DATA; + /** * The table public.api_keys. */ diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/JAnalyticsData.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/JAnalyticsData.java new file mode 100644 index 000000000..cd44f3a14 --- /dev/null +++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/JAnalyticsData.java @@ -0,0 +1,174 @@ +/* + * This file is generated by jOOQ. + */ +package com.epam.ta.reportportal.jooq.tables; + + +import com.epam.ta.reportportal.jooq.Indexes; +import com.epam.ta.reportportal.jooq.JPublic; +import com.epam.ta.reportportal.jooq.Keys; +import com.epam.ta.reportportal.jooq.tables.records.JAnalyticsDataRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.List; + +import javax.annotation.processing.Generated; + +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.Index; +import org.jooq.JSONB; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row4; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.12.4" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class JAnalyticsData extends TableImpl { + + private static final long serialVersionUID = 1789208330; + + /** + * The reference instance of public.analytics_data + */ + public static final JAnalyticsData ANALYTICS_DATA = new JAnalyticsData(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return JAnalyticsDataRecord.class; + } + + /** + * The column public.analytics_data.id. + */ + public final TableField ID = createField(DSL.name("id"), org.jooq.impl.SQLDataType.BIGINT.nullable(false).defaultValue(org.jooq.impl.DSL.field("nextval('analytics_data_id_seq'::regclass)", org.jooq.impl.SQLDataType.BIGINT)), this, ""); + + /** + * The column public.analytics_data.type. + */ + public final TableField TYPE = createField(DSL.name("type"), org.jooq.impl.SQLDataType.CLOB.nullable(false), this, ""); + + /** + * The column public.analytics_data.created_at. + */ + public final TableField CREATED_AT = createField(DSL.name("created_at"), org.jooq.impl.SQLDataType.TIMESTAMP.nullable(false).defaultValue(org.jooq.impl.DSL.field("now()", org.jooq.impl.SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column public.analytics_data.metadata. + */ + public final TableField METADATA = createField(DSL.name("metadata"), org.jooq.impl.SQLDataType.JSONB, this, ""); + + /** + * Create a public.analytics_data table reference + */ + public JAnalyticsData() { + this(DSL.name("analytics_data"), null); + } + + /** + * Create an aliased public.analytics_data table reference + */ + public JAnalyticsData(String alias) { + this(DSL.name(alias), ANALYTICS_DATA); + } + + /** + * Create an aliased public.analytics_data table reference + */ + public JAnalyticsData(Name alias) { + this(alias, ANALYTICS_DATA); + } + + private JAnalyticsData(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private JAnalyticsData(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment("")); + } + + public JAnalyticsData(Table child, ForeignKey key) { + super(child, key, ANALYTICS_DATA); + } + + @Override + public Schema getSchema() { + return JPublic.PUBLIC; + } + + @Override + public List getIndexes() { + return Arrays.asList(Indexes.ANALYTICS_DATA_PKEY); + } + + @Override + public Identity getIdentity() { + return Keys.IDENTITY_ANALYTICS_DATA; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.ANALYTICS_DATA_PKEY; + } + + @Override + public List> getKeys() { + return Arrays.>asList(Keys.ANALYTICS_DATA_PKEY); + } + + @Override + public JAnalyticsData as(String alias) { + return new JAnalyticsData(DSL.name(alias), this); + } + + @Override + public JAnalyticsData as(Name alias) { + return new JAnalyticsData(alias, this); + } + + /** + * Rename this table + */ + @Override + public JAnalyticsData rename(String name) { + return new JAnalyticsData(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public JAnalyticsData rename(Name name) { + return new JAnalyticsData(name, null); + } + + // ------------------------------------------------------------------------- + // Row4 type methods + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } +} diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JAnalyticsDataRecord.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JAnalyticsDataRecord.java new file mode 100644 index 000000000..9840838a6 --- /dev/null +++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JAnalyticsDataRecord.java @@ -0,0 +1,230 @@ +/* + * This file is generated by jOOQ. + */ +package com.epam.ta.reportportal.jooq.tables.records; + + +import com.epam.ta.reportportal.jooq.tables.JAnalyticsData; + +import java.sql.Timestamp; + +import javax.annotation.processing.Generated; + +import org.jooq.Field; +import org.jooq.JSONB; +import org.jooq.Record1; +import org.jooq.Record4; +import org.jooq.Row4; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.12.4" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class JAnalyticsDataRecord extends UpdatableRecordImpl implements Record4 { + + private static final long serialVersionUID = 962206372; + + /** + * Setter for public.analytics_data.id. + */ + public void setId(Long value) { + set(0, value); + } + + /** + * Getter for public.analytics_data.id. + */ + public Long getId() { + return (Long) get(0); + } + + /** + * Setter for public.analytics_data.type. + */ + public void setType(String value) { + set(1, value); + } + + /** + * Getter for public.analytics_data.type. + */ + public String getType() { + return (String) get(1); + } + + /** + * Setter for public.analytics_data.created_at. + */ + public void setCreatedAt(Timestamp value) { + set(2, value); + } + + /** + * Getter for public.analytics_data.created_at. + */ + public Timestamp getCreatedAt() { + return (Timestamp) get(2); + } + + /** + * Setter for public.analytics_data.metadata. + */ + public void setMetadata(JSONB value) { + set(3, value); + } + + /** + * Getter for public.analytics_data.metadata. + */ + public JSONB getMetadata() { + return (JSONB) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Record4 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } + + @Override + public Row4 valuesRow() { + return (Row4) super.valuesRow(); + } + + @Override + public Field field1() { + return JAnalyticsData.ANALYTICS_DATA.ID; + } + + @Override + public Field field2() { + return JAnalyticsData.ANALYTICS_DATA.TYPE; + } + + @Override + public Field field3() { + return JAnalyticsData.ANALYTICS_DATA.CREATED_AT; + } + + @Override + public Field field4() { + return JAnalyticsData.ANALYTICS_DATA.METADATA; + } + + @Override + public Long component1() { + return getId(); + } + + @Override + public String component2() { + return getType(); + } + + @Override + public Timestamp component3() { + return getCreatedAt(); + } + + @Override + public JSONB component4() { + return getMetadata(); + } + + @Override + public Long value1() { + return getId(); + } + + @Override + public String value2() { + return getType(); + } + + @Override + public Timestamp value3() { + return getCreatedAt(); + } + + @Override + public JSONB value4() { + return getMetadata(); + } + + @Override + public JAnalyticsDataRecord value1(Long value) { + setId(value); + return this; + } + + @Override + public JAnalyticsDataRecord value2(String value) { + setType(value); + return this; + } + + @Override + public JAnalyticsDataRecord value3(Timestamp value) { + setCreatedAt(value); + return this; + } + + @Override + public JAnalyticsDataRecord value4(JSONB value) { + setMetadata(value); + return this; + } + + @Override + public JAnalyticsDataRecord values(Long value1, String value2, Timestamp value3, JSONB value4) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached JAnalyticsDataRecord + */ + public JAnalyticsDataRecord() { + super(JAnalyticsData.ANALYTICS_DATA); + } + + /** + * Create a detached, initialised JAnalyticsDataRecord + */ + public JAnalyticsDataRecord(Long id, String type, Timestamp createdAt, JSONB metadata) { + super(JAnalyticsData.ANALYTICS_DATA); + + set(0, id); + set(1, type); + set(2, createdAt); + set(3, metadata); + } +} diff --git a/src/test/java/com/epam/ta/reportportal/dao/AnalyticsDataRepositoryTest.java b/src/test/java/com/epam/ta/reportportal/dao/AnalyticsDataRepositoryTest.java new file mode 100644 index 000000000..00dec18ee --- /dev/null +++ b/src/test/java/com/epam/ta/reportportal/dao/AnalyticsDataRepositoryTest.java @@ -0,0 +1,36 @@ +package com.epam.ta.reportportal.dao; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import com.epam.ta.reportportal.BaseTest; +import com.epam.ta.reportportal.entity.Metadata; +import com.epam.ta.reportportal.entity.analytics.AnalyticsData; +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +class AnalyticsDataRepositoryTest extends BaseTest { + + @Autowired + private AnalyticsDataRepository analyticsDataRepository; + + + @Test + void persistAnalyticsDataSuccess() { + AnalyticsData analyticsData = new AnalyticsData(); + analyticsData.setType("ANALYZER_MANUAL_START"); + + Map map = new HashMap<>(); + map.put("version", 5.11); + analyticsData.setMetadata(new Metadata(map)); + analyticsData.setCreatedAt(Instant.now()); + AnalyticsData asd = analyticsDataRepository.save(analyticsData); + + AnalyticsData persistedRecord = analyticsDataRepository.getById(asd.getId()); + + assertNotNull(persistedRecord.getCreatedAt()); + assertNotNull(persistedRecord.getType()); + } +}