feat(PostgreSQL): Create and update the PostgreSQL sequences

This commit is contained in:
Sylphy
2025-04-12 01:33:14 +08:00
parent 557c43fede
commit 5968485f51
14 changed files with 343 additions and 52 deletions

View File

@ -11,7 +11,9 @@ import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
import ai.chat2db.server.web.api.controller.rdb.request.DdlExportRequest;
import ai.chat2db.server.web.api.controller.rdb.request.SequenceBriefQueryRequest;
import ai.chat2db.spi.model.SimpleSequence;
import ai.chat2db.server.web.api.controller.rdb.request.SequenceModifySqlRequest;
import ai.chat2db.server.web.api.controller.rdb.vo.SqlVO;
import ai.chat2db.spi.model.*;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -55,4 +57,17 @@ public class SequenceController {
ShowCreateSequenceParam param = rdbWebConverter.ddlExport2showSequenceCreate(request);
return sequenceService.showCreateSequence(param);
}
/**
* Get the sql statement that modifies the sequence
*
* @param request
* @return
*/
@PostMapping("/modify/sql")
public ListResult<SqlVO> modifySql(@Valid @RequestBody SequenceModifySqlRequest request) {
Sequence sequence = rdbWebConverter.sequenceRequest2param(request.getNewSequence());
return sequenceService.buildSql(rdbWebConverter.sequenceRequest2param(request.getOldSequence()), sequence)
.map(rdbWebConverter::dto2vo);
}
}

View File

@ -81,6 +81,14 @@ public abstract class RdbWebConverter {
*/
public abstract Table tableRequest2param(TableRequest request);
/**
* Parameter conversion
*
* @param request
* @return
*/
public abstract Sequence sequenceRequest2param(SequenceRequest request);
/**
* Parameter conversion
*
@ -214,20 +222,6 @@ public abstract class RdbWebConverter {
* @return
*/
public abstract List<TableVO> tableDto2vo(List<Table> dtos);
/**
* Model conversion
*
* @param dtos
* @return
*/
public abstract SimpleSequence SequenceDto2vo(Sequence dtos);
/**
* Model conversion
*
* @param dtos
* @return
*/
public abstract List<SimpleSequence> SequenceDto2vo(List<Sequence> dtos);
/**
* Model conversion
* @param tableColumns

View File

@ -34,14 +34,4 @@ public class SequenceBriefQueryRequest extends PageQueryRequest implements DataS
* The space where the sequence is located is required by pg and oracle, but not by mysql.
*/
private String schemaName;
/**
* Fuzzy search terms
*/
private String searchKey;
/**
* if true, refresh the cache
*/
private boolean refresh;
}

View File

@ -0,0 +1,25 @@
package ai.chat2db.server.web.api.controller.rdb.request;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Modify sequence sql request
*
* @author Sylphy
*/
@Data
public class SequenceModifySqlRequest extends DataSourceBaseRequest {
/**
* Old sequence structure
* Empty means creating a new sequence
*/
private SequenceRequest oldSequence;
/**
* new sequence structure
*/
@NotNull
private SequenceRequest newSequence;
}

View File

@ -0,0 +1,63 @@
package ai.chat2db.server.web.api.controller.rdb.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* Modify sequence sql request
*
* @author Sylphy
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SequenceRequest {
/**
* Schema name
*/
private String nspname;
/**
* Sequence name
*/
private String relname;
/**
* Sequence data type
*/
private String typname;
/**
* Sequence cache
*/
private String seqcache;
/**
* Sequence owner
*/
private String rolname;
/**
* Sequence comment
*/
private String comment;
/**
* Sequence start value
*/
private String seqstart;
/**
* Sequence step value
*/
private String seqincrement;
/**
* Sequence max value
*/
private String seqmax;
/**
* Sequence min value
*/
private String seqmin;
/**
* Sequence cycle
*/
private Boolean seqcycle;
}