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
|
||||||
upagge
commented
TODO можно удалить, скоре всего это просто оставлено для обратной совместимости со старым апи TODO можно удалить, скоре всего это просто оставлено для обратной совместимости со старым апи
DmitrySheyko
commented
Удалено Удалено
|
|||||||
@ -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
Лишний перенос строки, и комментарий непонятно что означает, почему это стоит учитывать и почему этот комментарий тут? Пагинация передается и настраивается. Комментарий стоит удалить.
Правки внес.
Комментарий думал оставить временно, чтобы не забыть осоенность которую нашел в документации. Привычка везде оставлять напоминания.