mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 05:20:15 +08:00
feat(PostgreSQL): Create and update the PostgreSQL sequences
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
Reference in New Issue
Block a user