feature/issues_v1 #25
@ -34,7 +34,7 @@ public class Issue {
|
|||||||
@EqualsAndHashCode.Include
|
@EqualsAndHashCode.Include
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Column(name = "iid")
|
@Column(name = "two_id")
|
||||||
|
|||||||
private Long twoId;
|
private Long twoId;
|
||||||
|
|
||||||
@Column(name = "project_id")
|
@Column(name = "project_id")
|
||||||
@ -64,7 +64,7 @@ public class Issue {
|
|||||||
private Person closedBy;
|
private Person closedBy;
|
||||||
|
|
||||||
@ElementCollection
|
@ElementCollection
|
||||||
@CollectionTable(name = "issue_label", joinColumns = @JoinColumn(name = "label_id"))
|
@CollectionTable(name = "issue_labels", joinColumns = @JoinColumn(name = "label_id"))
|
||||||
@Column(name = "labels")
|
@Column(name = "labels")
|
||||||
private Set<String> labels = new HashSet<>();
|
private Set<String> labels = new HashSet<>();
|
||||||
|
|
||||||
@ -93,29 +93,29 @@ public class Issue {
|
|||||||
private IssueType type; // ОБразец приходящего значения "INCIDENT"
|
private IssueType type; // ОБразец приходящего значения "INCIDENT"
|
||||||
|
|
||||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||||
@JoinColumn(name = "assignee")
|
@JoinColumn(name = "assignee_id")
|
||||||
private Person assignee;
|
private Person assignee;
|
||||||
|
|
||||||
@Column(name = "user_notes_count") //Количество комментов пользователя
|
@Column(name = "user_notes_count")
|
||||||
private Integer userNotesCount;
|
private Integer userNotesCount;
|
||||||
|
|
||||||
@Column(name = "merge_requests_count")
|
@Column(name = "merge_requests_count")
|
||||||
private Integer mergeRequestsCount;
|
private Integer mergeRequestsCount;
|
||||||
|
|
||||||
@Column(name = "upvotes") // Количество лайков
|
@Column(name = "up_votes")
|
||||||
private Integer upVotes;
|
private Integer upVotes;
|
||||||
|
|
||||||
@Column(name = "downvotes") // Количество дизлайков
|
@Column(name = "down_votes")
|
||||||
private Integer downVotes;
|
private Integer downVotes;
|
||||||
|
|
||||||
@Column(name = "due_date")
|
@Column(name = "due_date")
|
||||||
private LocalDateTime dueDate;
|
private LocalDateTime dueDate;
|
||||||
|
|
||||||
@Column(name = "confidential") // Конфиденцальное или нет
|
@Column(name = "confidential")
|
||||||
private Boolean confidential;
|
private Boolean confidential;
|
||||||
|
|
||||||
@Column(name = "discussion_locked")
|
@Column(name = "discussion_locked")
|
||||||
private Integer discussionLocked; //TODO выяснить тип поляя.
|
private Integer discussionLocked;
|
||||||
|
|
||||||
@Column(name = "issue_type")
|
@Column(name = "issue_type")
|
||||||
private String issueType; //TODO выяснить зачем дублирует поле type Образец приходящего значения "incident"
|
private String issueType; //TODO выяснить зачем дублирует поле type Образец приходящего значения "incident"
|
||||||
@ -123,7 +123,6 @@ public class Issue {
|
|||||||
@Column(name = "web_url")
|
@Column(name = "web_url")
|
||||||
private String webUrl;
|
private String webUrl;
|
||||||
|
|
||||||
|
|
||||||
@Embedded
|
@Embedded
|
||||||
@AttributeOverrides({
|
@AttributeOverrides({
|
||||||
@AttributeOverride(name = "timeEstimate", column = @Column(name = "time_estimate")),
|
@AttributeOverride(name = "timeEstimate", column = @Column(name = "time_estimate")),
|
||||||
@ -135,8 +134,8 @@ public class Issue {
|
|||||||
|
|
||||||
@Embedded
|
@Embedded
|
||||||
@AttributeOverrides({
|
@AttributeOverrides({
|
||||||
@AttributeOverride(name = "count", column = @Column(name = "count")),
|
@AttributeOverride(name = "count", column = @Column(name = "task_count")),
|
||||||
@AttributeOverride(name = "completedCount", column = @Column(name = "completed_count"))
|
@AttributeOverride(name = "completedCount", column = @Column(name = "task_completed_count"))
|
||||||
})
|
})
|
||||||
private TaskCompletionStatus taskCompletionStatus;
|
private TaskCompletionStatus taskCompletionStatus;
|
||||||
|
|
||||||
@ -148,11 +147,11 @@ public class Issue {
|
|||||||
|
|
||||||
@Embedded
|
@Embedded
|
||||||
@AttributeOverrides({
|
@AttributeOverrides({
|
||||||
@AttributeOverride(name = "self", column = @Column(name = "self")),
|
@AttributeOverride(name = "self", column = @Column(name = "link_to_self")),
|
||||||
@AttributeOverride(name = "notes", column = @Column(name = "notes")),
|
@AttributeOverride(name = "notes", column = @Column(name = "link_to_notes")),
|
||||||
@AttributeOverride(name = "awardEmoji", column = @Column(name = "award_emoji")),
|
@AttributeOverride(name = "awardEmoji", column = @Column(name = "link_to_award_emoji")),
|
||||||
@AttributeOverride(name = "project", column = @Column(name = "project")),
|
@AttributeOverride(name = "project", column = @Column(name = "link_to_project")),
|
||||||
@AttributeOverride(name = "closedAsDuplicateOf", column = @Column(name = "closed_as_duplicate_of"))
|
@AttributeOverride(name = "closedAsDuplicateOf", column = @Column(name = "link_to_closed_as_duplicate_of"))
|
||||||
})
|
})
|
||||||
private Links links;
|
private Links links;
|
||||||
|
|
||||||
@ -164,8 +163,9 @@ public class Issue {
|
|||||||
})
|
})
|
||||||
private References references;
|
private References references;
|
||||||
|
|
||||||
/*Возможно надо заменить на енум "UNKNOWN", Critical - S1, High - S2, Medium - S3, Low - S4.
|
/**
|
||||||
Но это поле доступно только для премиум акаунтов
|
Возможно надо заменить на енум: "UNKNOWN", "Critical - S1", "High - S2", "Medium - S3", "Low - S4".
|
||||||
|
Но выбор любых значений кроме "UNKNOWN" доступен только для премиум акаунтов и я не могу получить точные значения котоые оно принимает.
|
||||||
*/
|
*/
|
||||||
@Column(name = "severity")
|
@Column(name = "severity")
|
||||||
private String severity;
|
private String severity;
|
||||||
@ -174,7 +174,7 @@ public class Issue {
|
|||||||
private Long movedToId;
|
private Long movedToId;
|
||||||
|
|
||||||
@Column(name = "service_desk_reply_to")
|
@Column(name = "service_desk_reply_to")
|
||||||
private String serviceDescReplyTo; //TODO не понятен тип поля
|
private String serviceDescReplyTo;
|
||||||
|
|
||||||
@Column(name = "epic_issue_id")
|
@Column(name = "epic_issue_id")
|
||||||
private Long epicId; // "epic_issue_id" Поле доснтупное только для премиум акаунтов
|
private Long epicId; // "epic_issue_id" Поле доснтупное только для премиум акаунтов
|
||||||
|
@ -28,7 +28,7 @@ public class Milestone {
|
|||||||
@EqualsAndHashCode.Include
|
@EqualsAndHashCode.Include
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Column(name = "iid")
|
@Column(name = "two_id")
|
||||||
private Long twoId;
|
private Long twoId;
|
||||||
|
|
||||||
@Column(name = "project_id")
|
@Column(name = "project_id")
|
||||||
|
@ -0,0 +1,206 @@
|
|||||||
|
<databaseChangeLog
|
||||||
|
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.17.xsd">
|
||||||
|
|
||||||
|
<changeSet id="2023-01-19-create-table-milestone" author="Dmitry Sheyko">
|
||||||
|
<createTable tableName="milestone">
|
||||||
|
<column name="id" type="int">
|
||||||
|
<constraints nullable="false" primaryKey="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="two_id" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="project_id" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="title" type="varchar(255)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="description" type="varchar(2000)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="state" type="varchar(10)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="created_date" type="datetime">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="updated_date" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="start_date" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="due_date" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="expired" type="boolean">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="web_url" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
</createTable>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="create-table-issue" author="Dmitry Sheyko">
|
||||||
|
<createTable tableName="issue">
|
||||||
|
<column name="id" type="int">
|
||||||
|
<constraints nullable="false" primaryKey="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="two_id" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="project_id" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="title" type="varchar(255)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="description" type="varchar(2000)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="state" type="varchar(10)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="created_date" type="datetime">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="updated_date" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="closed_at" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="closed_by_id" type="int">
|
||||||
|
<constraints nullable="true" foreignKeyName="fk_issue_closed_by_id_person_id" references="person(id)"/>
|
||||||
|
</column>
|
||||||
|
<column name="milestone_id" type="int">
|
||||||
|
<constraints nullable="false" foreignKeyName="fk_issie_milestone_id_milestone_id" references="milestone(id)"/>
|
||||||
|
</column>
|
||||||
|
<column name="author_id" type="int">
|
||||||
|
<constraints nullable="false" foreignKeyName="fk_issue_author_id_person_id" references="person(id)"/>
|
||||||
|
</column>
|
||||||
|
<column name="type" type="varchar(10)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="assignee_id" type="int">
|
||||||
|
<constraints nullable="true" foreignKeyName="fk_issue_assignee_id_person_id" references="person(id)"/>
|
||||||
|
</column>
|
||||||
|
<column name="user_notes_count" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="merge_requests_count" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="up_votes" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="down_votes" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="due_date" type="datetime">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="confidential" type="boolean">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="discussion_locked" type="int">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="issue_type" type="varchar(10)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="web_url" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="time_estimate" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="total_time_spent" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="human_time_estimate" type="varchar(20)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="human_total_time_spent" type="varchar(20)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="task_count" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="task_completed_count" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="blocking_issues_count" type="int">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="has_tasks" type="boolean">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="link_to_self" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="link_to_notes" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="link_to_award_emoji" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="link_to_project" type="varchar(300)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="link_to_closed_as_duplicate_of" type="varchar(300)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="short_reference" type="varchar(100)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="relative_reference" type="varchar(100)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="full_reference" type="varchar(100)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="severity" type="varchar(50)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="moved_to_id" type="int">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="service_desk_reply_to" type="varchar(1000)">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="epic_issue_id" type="int">
|
||||||
|
<constraints nullable="true"/>
|
||||||
|
</column>
|
||||||
|
</createTable>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="create-table-issue_labels" author="Dmitry Sheyko">
|
||||||
|
<createTable tableName="issue_labels">
|
||||||
|
<column name="issue_id" type="int">
|
||||||
|
<constraints nullable="false" foreignKeyName="fk_issue_labels_issue_id"
|
||||||
|
references="issue(id)" deleteCascade="true"/>
|
||||||
|
</column>
|
||||||
|
<column name="labels" type="varchar(255)">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
</createTable>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="create-table-issue_assignees" author="Dmitry Sheyko">
|
||||||
|
<createTable tableName="issue_assignees">
|
||||||
|
<column name="issue_id" type="int">
|
||||||
|
<constraints nullable="false" foreignKeyName="fk_issue_assignees_issue_id" references="issue(id)"/>
|
||||||
|
</column>
|
||||||
|
<column name="person_id" type="int">
|
||||||
|
<constraints nullable="false" foreignKeyName="fk_issue_assignees_person_id" references="person(id)"/>
|
||||||
|
</column>
|
||||||
|
</createTable>
|
||||||
|
|
||||||
|
<addPrimaryKey tableName="issue_assignees" columnNames="issue_id, person_id"/>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
@ -9,5 +9,6 @@
|
|||||||
|
|
||||||
<include file="2022-12-03-create-tables.xml" relativeToChangelogFile="true"/>
|
<include file="2022-12-03-create-tables.xml" relativeToChangelogFile="true"/>
|
||||||
<include file="2022-12-03-insert.xml" relativeToChangelogFile="true"/>
|
<include file="2022-12-03-insert.xml" relativeToChangelogFile="true"/>
|
||||||
|
<include file="2023-01-19-create-tables-for-issue.xml" relativeToChangelogFile="true"/>
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
@ -71,7 +71,7 @@ public class IssueJson {
|
|||||||
private Boolean confidential;
|
private Boolean confidential;
|
||||||
|
|
||||||
@JsonProperty("discussion_locked")
|
@JsonProperty("discussion_locked")
|
||||||
private Integer discussionLocked; //TODO выяснить тип поля
|
private Integer discussionLocked;
|
||||||
|
|
||||||
@JsonProperty("issue_type")
|
@JsonProperty("issue_type")
|
||||||
private String issueType; //TODO выяснить зачем дублирует поле type
|
private String issueType; //TODO выяснить зачем дублирует поле type
|
||||||
@ -95,13 +95,13 @@ public class IssueJson {
|
|||||||
private LinksJson links;
|
private LinksJson links;
|
||||||
|
|
||||||
private ReferencesJson references;
|
private ReferencesJson references;
|
||||||
private String severity; //TODO заменить на енум "UNKNOWN", Critical - S1, High - S2, Medium - S3, Low - S4,
|
private String severity;
|
||||||
|
|
||||||
@JsonProperty("moved_to_id")
|
@JsonProperty("moved_to_id")
|
||||||
private Long movedToId;
|
private Long movedToId;
|
||||||
|
|
||||||
@JsonProperty("service_desk_reply_to")
|
@JsonProperty("service_desk_reply_to")
|
||||||
private Long serviceDescReplyTo; //TODO не понятен тип поля
|
private Long serviceDescReplyTo;
|
||||||
|
|
||||||
@JsonProperty("epic_issue_id")
|
@JsonProperty("epic_issue_id")
|
||||||
private Long epicId; // "epic_issue_id" Поле доступное только для премиум акаунтов
|
private Long epicId; // "epic_issue_id" Поле доступное только для премиум акаунтов
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package dev.struchkov.bot.gitlab.sdk.domain;
|
package dev.struchkov.bot.gitlab.sdk.domain;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -8,8 +9,16 @@ import lombok.Data;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class TimeStatsJson {
|
public class TimeStatsJson {
|
||||||
|
|
||||||
|
@JsonProperty("time_estimate")
|
||||||
private Integer timeEstimate;
|
private Integer timeEstimate;
|
||||||
|
|
||||||
|
@JsonProperty("total_time_spent")
|
||||||
private Integer totalTimeSpent; // количество секунд затраченых на работы, пример 37800"
|
private Integer totalTimeSpent; // количество секунд затраченых на работы, пример 37800"
|
||||||
|
|
||||||
|
@JsonProperty("human_time_estimate")
|
||||||
private String humanTimeEstimate;
|
private String humanTimeEstimate;
|
||||||
|
|
||||||
|
@JsonProperty("human_total_time_spent")
|
||||||
private String humanTotalTimeSpent; // Время строкой, пример "10h 30m"
|
private String humanTotalTimeSpent; // Время строкой, пример "10h 30m"
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user
Лишний перенос строки, и комментарий непонятно что означает, почему это стоит учитывать и почему этот комментарий тут? Пагинация передается и настраивается. Комментарий стоит удалить.
Правки внес.
Комментарий думал оставить временно, чтобы не забыть осоенность которую нашел в документации. Привычка везде оставлять напоминания.