diff --git a/dao/build.gradle b/dao/build.gradle
index 737ac89..0e62ce6 100644
--- a/dao/build.gradle
+++ b/dao/build.gradle
@@ -78,6 +78,12 @@ jooq {
includeExpression = 'mock_data_rule.mock_data_type'
includeTypes = '.*'
}
+ forcedType {
+ userType = 'com.databasir.dao.enums.ProjectSyncTaskStatus'
+ converter = 'com.databasir.dao.converter.ProjectSyncTaskStatusConverter'
+ includeExpression = 'project_sync_task.status'
+ includeTypes = '.*'
+ }
}
}
generate {
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/Databasir.java b/dao/generated-src/jooq/main/java/com/databasir/dao/Databasir.java
index 9ead5d5..019bac4 100644
--- a/dao/generated-src/jooq/main/java/com/databasir/dao/Databasir.java
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/Databasir.java
@@ -18,6 +18,7 @@ import com.databasir.dao.tables.OauthApp;
import com.databasir.dao.tables.OperationLog;
import com.databasir.dao.tables.Project;
import com.databasir.dao.tables.ProjectSyncRule;
+import com.databasir.dao.tables.ProjectSyncTask;
import com.databasir.dao.tables.SysKey;
import com.databasir.dao.tables.SysMail;
import com.databasir.dao.tables.TableColumnDocument;
@@ -120,6 +121,11 @@ public class Databasir extends SchemaImpl {
*/
public final ProjectSyncRule PROJECT_SYNC_RULE = ProjectSyncRule.PROJECT_SYNC_RULE;
+ /**
+ * The table databasir.project_sync_task
.
+ */
+ public final ProjectSyncTask PROJECT_SYNC_TASK = ProjectSyncTask.PROJECT_SYNC_TASK;
+
/**
* The table databasir.sys_key
.
*/
@@ -200,6 +206,7 @@ public class Databasir extends SchemaImpl {
OperationLog.OPERATION_LOG,
Project.PROJECT,
ProjectSyncRule.PROJECT_SYNC_RULE,
+ ProjectSyncTask.PROJECT_SYNC_TASK,
SysKey.SYS_KEY,
SysMail.SYS_MAIL,
TableColumnDocument.TABLE_COLUMN_DOCUMENT,
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/Indexes.java b/dao/generated-src/jooq/main/java/com/databasir/dao/Indexes.java
index e23fdbe..a07d9f6 100644
--- a/dao/generated-src/jooq/main/java/com/databasir/dao/Indexes.java
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/Indexes.java
@@ -7,6 +7,7 @@ package com.databasir.dao;
import com.databasir.dao.tables.DataSourceProperty;
import com.databasir.dao.tables.DatabaseDocument;
import com.databasir.dao.tables.DocumentDiscussion;
+import com.databasir.dao.tables.ProjectSyncTask;
import com.databasir.dao.tables.TableColumnDocument;
import com.databasir.dao.tables.TableDocument;
import com.databasir.dao.tables.TableForeignKeyDocument;
@@ -37,8 +38,10 @@ public class Indexes {
public static final Index TABLE_TRIGGER_DOCUMENT_IDX_DATABASE_DOCUMENT_ID = Internal.createIndex(DSL.name("idx_database_document_id"), TableTriggerDocument.TABLE_TRIGGER_DOCUMENT, new OrderField[] { TableTriggerDocument.TABLE_TRIGGER_DOCUMENT.DATABASE_DOCUMENT_ID }, false);
public static final Index DATABASE_DOCUMENT_IDX_PROJECT_ID = Internal.createIndex(DSL.name("idx_project_id"), DatabaseDocument.DATABASE_DOCUMENT, new OrderField[] { DatabaseDocument.DATABASE_DOCUMENT.PROJECT_ID }, false);
public static final Index DOCUMENT_DISCUSSION_IDX_PROJECT_ID = Internal.createIndex(DSL.name("idx_project_id"), DocumentDiscussion.DOCUMENT_DISCUSSION, new OrderField[] { DocumentDiscussion.DOCUMENT_DISCUSSION.PROJECT_ID }, false);
+ public static final Index PROJECT_SYNC_TASK_IDX_PROJECT_ID = Internal.createIndex(DSL.name("idx_project_id"), ProjectSyncTask.PROJECT_SYNC_TASK, new OrderField[] { ProjectSyncTask.PROJECT_SYNC_TASK.PROJECT_ID }, false);
public static final Index TABLE_COLUMN_DOCUMENT_IDX_TABLE_DOCUMENT_ID = Internal.createIndex(DSL.name("idx_table_document_id"), TableColumnDocument.TABLE_COLUMN_DOCUMENT, new OrderField[] { TableColumnDocument.TABLE_COLUMN_DOCUMENT.TABLE_DOCUMENT_ID }, false);
public static final Index TABLE_FOREIGN_KEY_DOCUMENT_IDX_TABLE_DOCUMENT_ID = Internal.createIndex(DSL.name("idx_table_document_id"), TableForeignKeyDocument.TABLE_FOREIGN_KEY_DOCUMENT, new OrderField[] { TableForeignKeyDocument.TABLE_FOREIGN_KEY_DOCUMENT.TABLE_DOCUMENT_ID }, false);
public static final Index TABLE_INDEX_DOCUMENT_IDX_TABLE_DOCUMENT_ID = Internal.createIndex(DSL.name("idx_table_document_id"), TableIndexDocument.TABLE_INDEX_DOCUMENT, new OrderField[] { TableIndexDocument.TABLE_INDEX_DOCUMENT.TABLE_DOCUMENT_ID }, false);
public static final Index TABLE_TRIGGER_DOCUMENT_IDX_TABLE_DOCUMENT_ID = Internal.createIndex(DSL.name("idx_table_document_id"), TableTriggerDocument.TABLE_TRIGGER_DOCUMENT, new OrderField[] { TableTriggerDocument.TABLE_TRIGGER_DOCUMENT.TABLE_DOCUMENT_ID }, false);
+ public static final Index PROJECT_SYNC_TASK_IDX_USER_ID = Internal.createIndex(DSL.name("idx_user_id"), ProjectSyncTask.PROJECT_SYNC_TASK, new OrderField[] { ProjectSyncTask.PROJECT_SYNC_TASK.USER_ID }, false);
}
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/Keys.java b/dao/generated-src/jooq/main/java/com/databasir/dao/Keys.java
index 21f9e62..a59d5ce 100644
--- a/dao/generated-src/jooq/main/java/com/databasir/dao/Keys.java
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/Keys.java
@@ -18,6 +18,7 @@ import com.databasir.dao.tables.OauthApp;
import com.databasir.dao.tables.OperationLog;
import com.databasir.dao.tables.Project;
import com.databasir.dao.tables.ProjectSyncRule;
+import com.databasir.dao.tables.ProjectSyncTask;
import com.databasir.dao.tables.SysKey;
import com.databasir.dao.tables.SysMail;
import com.databasir.dao.tables.TableColumnDocument;
@@ -42,6 +43,7 @@ import com.databasir.dao.tables.records.OauthAppRecord;
import com.databasir.dao.tables.records.OperationLogRecord;
import com.databasir.dao.tables.records.ProjectRecord;
import com.databasir.dao.tables.records.ProjectSyncRuleRecord;
+import com.databasir.dao.tables.records.ProjectSyncTaskRecord;
import com.databasir.dao.tables.records.SysKeyRecord;
import com.databasir.dao.tables.records.SysMailRecord;
import com.databasir.dao.tables.records.TableColumnDocumentRecord;
@@ -93,6 +95,7 @@ public class Keys {
public static final UniqueKey KEY_PROJECT_UK_GROUP_ID_NAME_DELETED_TOKEN = Internal.createUniqueKey(Project.PROJECT, DSL.name("KEY_project_uk_group_id_name_deleted_token"), new TableField[] { Project.PROJECT.GROUP_ID, Project.PROJECT.NAME, Project.PROJECT.DELETED_TOKEN }, true);
public static final UniqueKey KEY_PROJECT_SYNC_RULE_PRIMARY = Internal.createUniqueKey(ProjectSyncRule.PROJECT_SYNC_RULE, DSL.name("KEY_project_sync_rule_PRIMARY"), new TableField[] { ProjectSyncRule.PROJECT_SYNC_RULE.ID }, true);
public static final UniqueKey KEY_PROJECT_SYNC_RULE_UK_PROJECT_ID = Internal.createUniqueKey(ProjectSyncRule.PROJECT_SYNC_RULE, DSL.name("KEY_project_sync_rule_uk_project_id"), new TableField[] { ProjectSyncRule.PROJECT_SYNC_RULE.PROJECT_ID }, true);
+ public static final UniqueKey KEY_PROJECT_SYNC_TASK_PRIMARY = Internal.createUniqueKey(ProjectSyncTask.PROJECT_SYNC_TASK, DSL.name("KEY_project_sync_task_PRIMARY"), new TableField[] { ProjectSyncTask.PROJECT_SYNC_TASK.ID }, true);
public static final UniqueKey KEY_SYS_KEY_PRIMARY = Internal.createUniqueKey(SysKey.SYS_KEY, DSL.name("KEY_sys_key_PRIMARY"), new TableField[] { SysKey.SYS_KEY.ID }, true);
public static final UniqueKey KEY_SYS_MAIL_PRIMARY = Internal.createUniqueKey(SysMail.SYS_MAIL, DSL.name("KEY_sys_mail_PRIMARY"), new TableField[] { SysMail.SYS_MAIL.ID }, true);
public static final UniqueKey KEY_TABLE_COLUMN_DOCUMENT_PRIMARY = Internal.createUniqueKey(TableColumnDocument.TABLE_COLUMN_DOCUMENT, DSL.name("KEY_table_column_document_PRIMARY"), new TableField[] { TableColumnDocument.TABLE_COLUMN_DOCUMENT.ID }, true);
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/Tables.java b/dao/generated-src/jooq/main/java/com/databasir/dao/Tables.java
index b7e080b..9631e01 100644
--- a/dao/generated-src/jooq/main/java/com/databasir/dao/Tables.java
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/Tables.java
@@ -18,6 +18,7 @@ import com.databasir.dao.tables.OauthApp;
import com.databasir.dao.tables.OperationLog;
import com.databasir.dao.tables.Project;
import com.databasir.dao.tables.ProjectSyncRule;
+import com.databasir.dao.tables.ProjectSyncTask;
import com.databasir.dao.tables.SysKey;
import com.databasir.dao.tables.SysMail;
import com.databasir.dao.tables.TableColumnDocument;
@@ -106,6 +107,11 @@ public class Tables {
*/
public static final ProjectSyncRule PROJECT_SYNC_RULE = ProjectSyncRule.PROJECT_SYNC_RULE;
+ /**
+ * The table databasir.project_sync_task
.
+ */
+ public static final ProjectSyncTask PROJECT_SYNC_TASK = ProjectSyncTask.PROJECT_SYNC_TASK;
+
/**
* The table databasir.sys_key
.
*/
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/ProjectSyncTask.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/ProjectSyncTask.java
new file mode 100644
index 0000000..8048ecb
--- /dev/null
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/ProjectSyncTask.java
@@ -0,0 +1,186 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.databasir.dao.tables;
+
+
+import com.databasir.dao.Databasir;
+import com.databasir.dao.Indexes;
+import com.databasir.dao.Keys;
+import com.databasir.dao.converter.ProjectSyncTaskStatusConverter;
+import com.databasir.dao.enums.ProjectSyncTaskStatus;
+import com.databasir.dao.tables.records.ProjectSyncTaskRecord;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+import org.jooq.Field;
+import org.jooq.ForeignKey;
+import org.jooq.Identity;
+import org.jooq.Index;
+import org.jooq.Name;
+import org.jooq.Record;
+import org.jooq.Row8;
+import org.jooq.Schema;
+import org.jooq.Table;
+import org.jooq.TableField;
+import org.jooq.TableOptions;
+import org.jooq.UniqueKey;
+import org.jooq.impl.DSL;
+import org.jooq.impl.SQLDataType;
+import org.jooq.impl.TableImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class ProjectSyncTask extends TableImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The reference instance of databasir.project_sync_task
+ */
+ public static final ProjectSyncTask PROJECT_SYNC_TASK = new ProjectSyncTask();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return ProjectSyncTaskRecord.class;
+ }
+
+ /**
+ * The column databasir.project_sync_task.id
.
+ */
+ public final TableField ID = createField(DSL.name("id"), SQLDataType.INTEGER.nullable(false).identity(true), this, "");
+
+ /**
+ * The column databasir.project_sync_task.project_id
.
+ */
+ public final TableField PROJECT_ID = createField(DSL.name("project_id"), SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column databasir.project_sync_task.user_id
.
+ */
+ public final TableField USER_ID = createField(DSL.name("user_id"), SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column databasir.project_sync_task.status
. NEW RUNNING
+ * FINISHED FAILED CANCELED
+ */
+ public final TableField STATUS = createField(DSL.name("status"), SQLDataType.VARCHAR(32).nullable(false).defaultValue(DSL.inline("NEW", SQLDataType.VARCHAR)), this, "NEW RUNNING FINISHED FAILED CANCELED", new ProjectSyncTaskStatusConverter());
+
+ /**
+ * The column databasir.project_sync_task.result
.
+ */
+ public final TableField RESULT = createField(DSL.name("result"), SQLDataType.VARCHAR(1024).nullable(false).defaultValue(DSL.inline("", SQLDataType.VARCHAR)), this, "");
+
+ /**
+ * The column databasir.project_sync_task.run_at
.
+ */
+ public final TableField RUN_AT = createField(DSL.name("run_at"), SQLDataType.LOCALDATETIME(0), this, "");
+
+ /**
+ * The column databasir.project_sync_task.update_at
.
+ */
+ public final TableField UPDATE_AT = createField(DSL.name("update_at"), SQLDataType.LOCALDATETIME(0).nullable(false).defaultValue(DSL.field("CURRENT_TIMESTAMP", SQLDataType.LOCALDATETIME)), this, "");
+
+ /**
+ * The column databasir.project_sync_task.create_at
.
+ */
+ public final TableField CREATE_AT = createField(DSL.name("create_at"), SQLDataType.LOCALDATETIME(0).nullable(false).defaultValue(DSL.field("CURRENT_TIMESTAMP", SQLDataType.LOCALDATETIME)), this, "");
+
+ private ProjectSyncTask(Name alias, Table aliased) {
+ this(alias, aliased, null);
+ }
+
+ private ProjectSyncTask(Name alias, Table aliased, Field>[] parameters) {
+ super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table());
+ }
+
+ /**
+ * Create an aliased databasir.project_sync_task
table
+ * reference
+ */
+ public ProjectSyncTask(String alias) {
+ this(DSL.name(alias), PROJECT_SYNC_TASK);
+ }
+
+ /**
+ * Create an aliased databasir.project_sync_task
table
+ * reference
+ */
+ public ProjectSyncTask(Name alias) {
+ this(alias, PROJECT_SYNC_TASK);
+ }
+
+ /**
+ * Create a databasir.project_sync_task
table reference
+ */
+ public ProjectSyncTask() {
+ this(DSL.name("project_sync_task"), null);
+ }
+
+ public ProjectSyncTask(Table child, ForeignKey key) {
+ super(child, key, PROJECT_SYNC_TASK);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return aliased() ? null : Databasir.DATABASIR;
+ }
+
+ @Override
+ public List getIndexes() {
+ return Arrays.asList(Indexes.PROJECT_SYNC_TASK_IDX_PROJECT_ID, Indexes.PROJECT_SYNC_TASK_IDX_USER_ID);
+ }
+
+ @Override
+ public Identity getIdentity() {
+ return (Identity) super.getIdentity();
+ }
+
+ @Override
+ public UniqueKey getPrimaryKey() {
+ return Keys.KEY_PROJECT_SYNC_TASK_PRIMARY;
+ }
+
+ @Override
+ public ProjectSyncTask as(String alias) {
+ return new ProjectSyncTask(DSL.name(alias), this);
+ }
+
+ @Override
+ public ProjectSyncTask as(Name alias) {
+ return new ProjectSyncTask(alias, this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public ProjectSyncTask rename(String name) {
+ return new ProjectSyncTask(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public ProjectSyncTask rename(Name name) {
+ return new ProjectSyncTask(name, null);
+ }
+
+ // -------------------------------------------------------------------------
+ // Row8 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row8 fieldsRow() {
+ return (Row8) super.fieldsRow();
+ }
+}
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/ProjectSyncTaskPojo.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/ProjectSyncTaskPojo.java
new file mode 100644
index 0000000..f80900a
--- /dev/null
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/ProjectSyncTaskPojo.java
@@ -0,0 +1,193 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.databasir.dao.tables.pojos;
+
+
+import com.databasir.dao.enums.ProjectSyncTaskStatus;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class ProjectSyncTaskPojo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private Integer id;
+ private Integer projectId;
+ private Integer userId;
+ private ProjectSyncTaskStatus status;
+ private String result;
+ private LocalDateTime runAt;
+ private LocalDateTime updateAt;
+ private LocalDateTime createAt;
+
+ public ProjectSyncTaskPojo() {}
+
+ public ProjectSyncTaskPojo(ProjectSyncTaskPojo value) {
+ this.id = value.id;
+ this.projectId = value.projectId;
+ this.userId = value.userId;
+ this.status = value.status;
+ this.result = value.result;
+ this.runAt = value.runAt;
+ this.updateAt = value.updateAt;
+ this.createAt = value.createAt;
+ }
+
+ public ProjectSyncTaskPojo(
+ Integer id,
+ Integer projectId,
+ Integer userId,
+ ProjectSyncTaskStatus status,
+ String result,
+ LocalDateTime runAt,
+ LocalDateTime updateAt,
+ LocalDateTime createAt
+ ) {
+ this.id = id;
+ this.projectId = projectId;
+ this.userId = userId;
+ this.status = status;
+ this.result = result;
+ this.runAt = runAt;
+ this.updateAt = updateAt;
+ this.createAt = createAt;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.id
.
+ */
+ public Integer getId() {
+ return this.id;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.id
.
+ */
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.project_id
.
+ */
+ public Integer getProjectId() {
+ return this.projectId;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.project_id
.
+ */
+ public void setProjectId(Integer projectId) {
+ this.projectId = projectId;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.user_id
.
+ */
+ public Integer getUserId() {
+ return this.userId;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.user_id
.
+ */
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.status
. NEW RUNNING
+ * FINISHED FAILED CANCELED
+ */
+ public ProjectSyncTaskStatus getStatus() {
+ return this.status;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.status
. NEW RUNNING
+ * FINISHED FAILED CANCELED
+ */
+ public void setStatus(ProjectSyncTaskStatus status) {
+ this.status = status;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.result
.
+ */
+ public String getResult() {
+ return this.result;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.result
.
+ */
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.run_at
.
+ */
+ public LocalDateTime getRunAt() {
+ return this.runAt;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.run_at
.
+ */
+ public void setRunAt(LocalDateTime runAt) {
+ this.runAt = runAt;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.update_at
.
+ */
+ public LocalDateTime getUpdateAt() {
+ return this.updateAt;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.update_at
.
+ */
+ public void setUpdateAt(LocalDateTime updateAt) {
+ this.updateAt = updateAt;
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.create_at
.
+ */
+ public LocalDateTime getCreateAt() {
+ return this.createAt;
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.create_at
.
+ */
+ public void setCreateAt(LocalDateTime createAt) {
+ this.createAt = createAt;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("ProjectSyncTaskPojo (");
+
+ sb.append(id);
+ sb.append(", ").append(projectId);
+ sb.append(", ").append(userId);
+ sb.append(", ").append(status);
+ sb.append(", ").append(result);
+ sb.append(", ").append(runAt);
+ sb.append(", ").append(updateAt);
+ sb.append(", ").append(createAt);
+
+ sb.append(")");
+ return sb.toString();
+ }
+}
diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/ProjectSyncTaskRecord.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/ProjectSyncTaskRecord.java
new file mode 100644
index 0000000..e98ad4c
--- /dev/null
+++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/ProjectSyncTaskRecord.java
@@ -0,0 +1,390 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.databasir.dao.tables.records;
+
+
+import com.databasir.dao.enums.ProjectSyncTaskStatus;
+import com.databasir.dao.tables.ProjectSyncTask;
+import com.databasir.dao.tables.pojos.ProjectSyncTaskPojo;
+
+import java.time.LocalDateTime;
+
+import org.jooq.Field;
+import org.jooq.Record1;
+import org.jooq.Record8;
+import org.jooq.Row8;
+import org.jooq.impl.UpdatableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class ProjectSyncTaskRecord extends UpdatableRecordImpl implements Record8 {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Setter for databasir.project_sync_task.id
.
+ */
+ public void setId(Integer value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.id
.
+ */
+ public Integer getId() {
+ return (Integer) get(0);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.project_id
.
+ */
+ public void setProjectId(Integer value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.project_id
.
+ */
+ public Integer getProjectId() {
+ return (Integer) get(1);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.user_id
.
+ */
+ public void setUserId(Integer value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.user_id
.
+ */
+ public Integer getUserId() {
+ return (Integer) get(2);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.status
. NEW RUNNING
+ * FINISHED FAILED CANCELED
+ */
+ public void setStatus(ProjectSyncTaskStatus value) {
+ set(3, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.status
. NEW RUNNING
+ * FINISHED FAILED CANCELED
+ */
+ public ProjectSyncTaskStatus getStatus() {
+ return (ProjectSyncTaskStatus) get(3);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.result
.
+ */
+ public void setResult(String value) {
+ set(4, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.result
.
+ */
+ public String getResult() {
+ return (String) get(4);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.run_at
.
+ */
+ public void setRunAt(LocalDateTime value) {
+ set(5, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.run_at
.
+ */
+ public LocalDateTime getRunAt() {
+ return (LocalDateTime) get(5);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.update_at
.
+ */
+ public void setUpdateAt(LocalDateTime value) {
+ set(6, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.update_at
.
+ */
+ public LocalDateTime getUpdateAt() {
+ return (LocalDateTime) get(6);
+ }
+
+ /**
+ * Setter for databasir.project_sync_task.create_at
.
+ */
+ public void setCreateAt(LocalDateTime value) {
+ set(7, value);
+ }
+
+ /**
+ * Getter for databasir.project_sync_task.create_at
.
+ */
+ public LocalDateTime getCreateAt() {
+ return (LocalDateTime) get(7);
+ }
+
+ // -------------------------------------------------------------------------
+ // Primary key information
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Record1 key() {
+ return (Record1) super.key();
+ }
+
+ // -------------------------------------------------------------------------
+ // Record8 type implementation
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row8 fieldsRow() {
+ return (Row8) super.fieldsRow();
+ }
+
+ @Override
+ public Row8 valuesRow() {
+ return (Row8) super.valuesRow();
+ }
+
+ @Override
+ public Field field1() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.ID;
+ }
+
+ @Override
+ public Field field2() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.PROJECT_ID;
+ }
+
+ @Override
+ public Field field3() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.USER_ID;
+ }
+
+ @Override
+ public Field field4() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.STATUS;
+ }
+
+ @Override
+ public Field field5() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.RESULT;
+ }
+
+ @Override
+ public Field field6() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.RUN_AT;
+ }
+
+ @Override
+ public Field field7() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.UPDATE_AT;
+ }
+
+ @Override
+ public Field field8() {
+ return ProjectSyncTask.PROJECT_SYNC_TASK.CREATE_AT;
+ }
+
+ @Override
+ public Integer component1() {
+ return getId();
+ }
+
+ @Override
+ public Integer component2() {
+ return getProjectId();
+ }
+
+ @Override
+ public Integer component3() {
+ return getUserId();
+ }
+
+ @Override
+ public ProjectSyncTaskStatus component4() {
+ return getStatus();
+ }
+
+ @Override
+ public String component5() {
+ return getResult();
+ }
+
+ @Override
+ public LocalDateTime component6() {
+ return getRunAt();
+ }
+
+ @Override
+ public LocalDateTime component7() {
+ return getUpdateAt();
+ }
+
+ @Override
+ public LocalDateTime component8() {
+ return getCreateAt();
+ }
+
+ @Override
+ public Integer value1() {
+ return getId();
+ }
+
+ @Override
+ public Integer value2() {
+ return getProjectId();
+ }
+
+ @Override
+ public Integer value3() {
+ return getUserId();
+ }
+
+ @Override
+ public ProjectSyncTaskStatus value4() {
+ return getStatus();
+ }
+
+ @Override
+ public String value5() {
+ return getResult();
+ }
+
+ @Override
+ public LocalDateTime value6() {
+ return getRunAt();
+ }
+
+ @Override
+ public LocalDateTime value7() {
+ return getUpdateAt();
+ }
+
+ @Override
+ public LocalDateTime value8() {
+ return getCreateAt();
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value1(Integer value) {
+ setId(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value2(Integer value) {
+ setProjectId(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value3(Integer value) {
+ setUserId(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value4(ProjectSyncTaskStatus value) {
+ setStatus(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value5(String value) {
+ setResult(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value6(LocalDateTime value) {
+ setRunAt(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value7(LocalDateTime value) {
+ setUpdateAt(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord value8(LocalDateTime value) {
+ setCreateAt(value);
+ return this;
+ }
+
+ @Override
+ public ProjectSyncTaskRecord values(Integer value1, Integer value2, Integer value3, ProjectSyncTaskStatus value4, String value5, LocalDateTime value6, LocalDateTime value7, LocalDateTime value8) {
+ value1(value1);
+ value2(value2);
+ value3(value3);
+ value4(value4);
+ value5(value5);
+ value6(value6);
+ value7(value7);
+ value8(value8);
+ return this;
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached ProjectSyncTaskRecord
+ */
+ public ProjectSyncTaskRecord() {
+ super(ProjectSyncTask.PROJECT_SYNC_TASK);
+ }
+
+ /**
+ * Create a detached, initialised ProjectSyncTaskRecord
+ */
+ public ProjectSyncTaskRecord(Integer id, Integer projectId, Integer userId, ProjectSyncTaskStatus status, String result, LocalDateTime runAt, LocalDateTime updateAt, LocalDateTime createAt) {
+ super(ProjectSyncTask.PROJECT_SYNC_TASK);
+
+ setId(id);
+ setProjectId(projectId);
+ setUserId(userId);
+ setStatus(status);
+ setResult(result);
+ setRunAt(runAt);
+ setUpdateAt(updateAt);
+ setCreateAt(createAt);
+ }
+
+ /**
+ * Create a detached, initialised ProjectSyncTaskRecord
+ */
+ public ProjectSyncTaskRecord(ProjectSyncTaskPojo value) {
+ super(ProjectSyncTask.PROJECT_SYNC_TASK);
+
+ if (value != null) {
+ setId(value.getId());
+ setProjectId(value.getProjectId());
+ setUserId(value.getUserId());
+ setStatus(value.getStatus());
+ setResult(value.getResult());
+ setRunAt(value.getRunAt());
+ setUpdateAt(value.getUpdateAt());
+ setCreateAt(value.getCreateAt());
+ }
+ }
+}
diff --git a/dao/src/main/java/com/databasir/dao/converter/ProjectSyncTaskStatusConverter.java b/dao/src/main/java/com/databasir/dao/converter/ProjectSyncTaskStatusConverter.java
new file mode 100644
index 0000000..120f940
--- /dev/null
+++ b/dao/src/main/java/com/databasir/dao/converter/ProjectSyncTaskStatusConverter.java
@@ -0,0 +1,12 @@
+package com.databasir.dao.converter;
+
+import com.databasir.dao.enums.ProjectSyncTaskStatus;
+import org.jooq.impl.EnumConverter;
+
+public class ProjectSyncTaskStatusConverter extends EnumConverter {
+
+ public ProjectSyncTaskStatusConverter() {
+ super(String.class, ProjectSyncTaskStatus.class);
+ }
+
+}
diff --git a/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java b/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java
new file mode 100644
index 0000000..33e350e
--- /dev/null
+++ b/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java
@@ -0,0 +1,9 @@
+package com.databasir.dao.enums;
+
+public enum ProjectSyncTaskStatus {
+ NEW,
+ RUNNING,
+ FINISHED,
+ FAILED,
+ CANCELLED
+}
diff --git a/dao/src/main/java/com/databasir/dao/impl/ProjectSyncTaskDao.java b/dao/src/main/java/com/databasir/dao/impl/ProjectSyncTaskDao.java
new file mode 100644
index 0000000..ad361e7
--- /dev/null
+++ b/dao/src/main/java/com/databasir/dao/impl/ProjectSyncTaskDao.java
@@ -0,0 +1,59 @@
+package com.databasir.dao.impl;
+
+import com.databasir.dao.enums.ProjectSyncTaskStatus;
+import com.databasir.dao.tables.pojos.ProjectSyncTaskPojo;
+import com.databasir.dao.tables.records.ProjectSyncTaskRecord;
+import lombok.Getter;
+import org.jooq.DSLContext;
+import org.jooq.UpdateSetMoreStep;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.List;
+
+import static com.databasir.dao.Tables.PROJECT_SYNC_TASK;
+
+@Repository
+public class ProjectSyncTaskDao extends BaseDao {
+
+ @Autowired
+ @Getter
+ private DSLContext dslContext;
+
+ public ProjectSyncTaskDao() {
+ super(PROJECT_SYNC_TASK, ProjectSyncTaskPojo.class);
+ }
+
+ public boolean existsByProjectId(Integer projectId, Collection statusIn) {
+ if (statusIn == null || statusIn.isEmpty()) {
+ throw new IllegalArgumentException("statusIn must not be empty");
+ }
+ return dslContext.fetchExists(PROJECT_SYNC_TASK,
+ PROJECT_SYNC_TASK.PROJECT_ID.eq(projectId).and(PROJECT_SYNC_TASK.STATUS.in(statusIn)));
+ }
+
+ public List listNewTasks(Integer size) {
+ return dslContext
+ .selectFrom(PROJECT_SYNC_TASK)
+ .where(PROJECT_SYNC_TASK.STATUS.eq(ProjectSyncTaskStatus.NEW))
+ .orderBy(PROJECT_SYNC_TASK.ID.asc())
+ .limit(size)
+ .fetchInto(ProjectSyncTaskPojo.class);
+ }
+
+ public int updateStatusAndResultById(Integer taskId, ProjectSyncTaskStatus status, String result) {
+ UpdateSetMoreStep updateStep = dslContext
+ .update(PROJECT_SYNC_TASK)
+ .set(PROJECT_SYNC_TASK.STATUS, status)
+ .set(PROJECT_SYNC_TASK.RESULT, result);
+ if (status == ProjectSyncTaskStatus.RUNNING) {
+ updateStep = updateStep.set(PROJECT_SYNC_TASK.RUN_AT, LocalDateTime.now());
+ }
+ return updateStep
+ .where(PROJECT_SYNC_TASK.ID.eq(taskId))
+ .execute();
+ }
+
+}
\ No newline at end of file
diff --git a/dao/src/main/resources/db/migration/V1.3__sync_task.sql b/dao/src/main/resources/db/migration/V1.3__sync_task.sql
new file mode 100644
index 0000000..1ffe8a1
--- /dev/null
+++ b/dao/src/main/resources/db/migration/V1.3__sync_task.sql
@@ -0,0 +1,14 @@
+CREATE TABLE IF NOT EXISTS project_sync_task
+(
+ `id` INT PRIMARY KEY AUTO_INCREMENT,
+ `project_id` INT NOT NULL,
+ `user_id` INT NOT NULL,
+ `status` VARCHAR(32) NOT NULL DEFAULT 'NEW' COMMENT 'NEW \ RUNNING \ FINISHED \ FAILED \ CANCELED',
+ `result` VARCHAR(1024) NOT NULL DEFAULT '',
+ `run_at` DATETIME DEFAULT NULL,
+ `update_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `create_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ INDEX idx_project_id (project_id),
+ INDEX idx_user_id (user_id)
+) CHARSET utf8mb4
+ COLLATE utf8mb4_unicode_ci;
\ No newline at end of file