Skip to content

Commit 8976ee1

Browse files
Zorin95670Adrien
authored andcommitted
wip
1 parent 9b854b8 commit 8976ee1

File tree

4 files changed

+167
-80
lines changed

4 files changed

+167
-80
lines changed

dpp/src/main/java/io/github/linagora/linid/im/dpp/DatabaseProviderPlugin.java

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ public class DatabaseProviderPlugin implements ProviderPlugin {
5959
private final CrudService crudService;
6060
private final TaskEngine taskEngine;
6161

62-
private static final String RESPONSE = "response";
63-
6462
/**
6563
* Service used to render Jinja templates within URIs, request bodies, headers,
6664
* and response mappings.
@@ -95,12 +93,12 @@ public DynamicEntity create(
9593
ProviderConfiguration config,
9694
DynamicEntity dynamicEntity) {
9795
DatabasePluginConfiguration databasePluginConfiguration = getDatabaseConfiguration("create", dynamicEntity);
98-
crudService.insert(config, databasePluginConfiguration, dynamicEntity);
99-
context.put(RESPONSE, dynamicEntity);
96+
DynamicEntity result = crudService.insert(config, databasePluginConfiguration, dynamicEntity);
10097

101-
taskEngine.execute(dynamicEntity, context, "beforeMappingCreate");
102-
var resultEntity = mappingEntity(context, databasePluginConfiguration, dynamicEntity);
103-
taskEngine.execute(dynamicEntity, context, "afterMappingCreate");
98+
taskEngine.execute(dynamicEntity, context, "beforeDatabaseMappingCreate");
99+
var resultEntity = mappingEntity(context, databasePluginConfiguration, result);
100+
// todo: mappingEntity => DONE
101+
taskEngine.execute(dynamicEntity, context, "afterDatabaseMappingCreate");
104102

105103
return resultEntity;
106104
}
@@ -140,16 +138,21 @@ public DynamicEntity patch(
140138
DynamicEntity dynamicEntity) {
141139

142140
DatabasePluginConfiguration databasePluginConfiguration = getDatabaseConfiguration("patch", dynamicEntity);
143-
DynamicEntity existingEntity = crudService.selectOne(context, config, databasePluginConfiguration, id, dynamicEntity);
141+
DynamicEntity entity = crudService.selectOne(context, config, databasePluginConfiguration, id, dynamicEntity);
144142

145-
if (existingEntity != null) {
143+
if (entity != null) {
146144
ModelMapper modelMapper = new ModelMapper();
147-
modelMapper.map(dynamicEntity, existingEntity);
148-
crudService.update(config, databasePluginConfiguration, id, existingEntity);
149-
return existingEntity;
145+
modelMapper.map(dynamicEntity, entity);
146+
crudService.update(config, databasePluginConfiguration, id, entity);
150147
}
151148

152-
return dynamicEntity;
149+
DynamicEntity result = crudService.selectOne(context, config, databasePluginConfiguration, id, dynamicEntity);
150+
151+
taskEngine.execute(dynamicEntity, context, "beforeDatabaseMappingPatch");
152+
var resultEntity = mappingEntity(context, databasePluginConfiguration, result);
153+
taskEngine.execute(dynamicEntity, context, "afterDatabaseMappingPatch");
154+
155+
return resultEntity;
153156
}
154157

155158
@Override
@@ -162,11 +165,10 @@ public DynamicEntity findById(
162165
DatabasePluginConfiguration databasePluginConfiguration = getDatabaseConfiguration("findById", dynamicEntity);
163166

164167
DynamicEntity result = crudService.selectOne(context, config, databasePluginConfiguration, id, dynamicEntity);
165-
context.put(RESPONSE, result);
166168

167-
taskEngine.execute(dynamicEntity, context, "beforeMappingFindById");
168-
var resultEntity = mappingEntity(context, databasePluginConfiguration, dynamicEntity);
169-
taskEngine.execute(dynamicEntity, context, "afterMappingFindById");
169+
taskEngine.execute(dynamicEntity, context, "beforeDatabaseMappingFindById");
170+
var resultEntity = mappingEntity(context, databasePluginConfiguration, result);
171+
taskEngine.execute(dynamicEntity, context, "afterDatabaseMappingFindById");
170172

171173
return resultEntity;
172174
}
@@ -180,28 +182,35 @@ public Page<DynamicEntity> findAll(
180182
DynamicEntity dynamicEntity) {
181183

182184
DatabasePluginConfiguration databasePluginConfiguration = getDatabaseConfiguration("findAll", dynamicEntity);
183-
Page<DynamicEntity> result = crudService.select(context, config, databasePluginConfiguration, dynamicEntity, filters, pageable);
184-
context.put(RESPONSE, result);
185+
Page<DynamicEntity> result = crudService.select(context, config, databasePluginConfiguration, dynamicEntity,
186+
filters, pageable);
185187

186-
taskEngine.execute(dynamicEntity, context, "beforeMappingFindAll");
187-
Page<DynamicEntity> entities = mappingEntities(context, databasePluginConfiguration, dynamicEntity, result);
188-
taskEngine.execute(dynamicEntity, context, "afterMappingFindAll");
188+
taskEngine.execute(dynamicEntity, context, "beforeDatabaseMappingFindAll");
189+
Page<DynamicEntity> resultEntity = mappingEntities(context, databasePluginConfiguration, dynamicEntity, result);
190+
taskEngine.execute(dynamicEntity, context, "afterDatabaseMappingFindAll");
189191

190-
return entities;
192+
return resultEntity;
191193
}
192194

193195
@Override
194196
public DynamicEntity update(
195197
TaskExecutionContext context,
196198
ProviderConfiguration config,
197-
String id,
199+
Object id,
198200
DynamicEntity dynamicEntity) {
199201

200202
DatabasePluginConfiguration databasePluginConfiguration = getDatabaseConfiguration("update", dynamicEntity);
201203

202-
crudService.update(config, databasePluginConfiguration, id, dynamicEntity);
204+
DynamicEntity result = crudService.update(config, databasePluginConfiguration, id, dynamicEntity);
205+
206+
// TODO: mappingEntity => DONE
207+
// TODO: missing bferoce Update => DONE
208+
// TODO: missing after Update => DONE
209+
taskEngine.execute(dynamicEntity, context, "beforeDatabaseMappingUpdate");
210+
DynamicEntity resultEntity = mappingEntity(context, databasePluginConfiguration, result);
211+
taskEngine.execute(dynamicEntity, context, "afterDatabaseMappingUpdate");
203212

204-
return dynamicEntity;
213+
return resultEntity;
205214
}
206215

207216
public DynamicEntity mappingEntity(TaskExecutionContext taskContext, DatabasePluginConfiguration configuration,
@@ -230,12 +239,14 @@ public DynamicEntity mappingEntity(TaskExecutionContext taskContext, DatabasePlu
230239
* @param pageable the pagination information for the result set.
231240
* @return a pageable list of mapped entities.
232241
*/
233-
public Page<DynamicEntity> mappingEntities(TaskExecutionContext taskContext, DatabasePluginConfiguration configuration,
242+
public Page<DynamicEntity> mappingEntities(TaskExecutionContext taskContext,
243+
DatabasePluginConfiguration configuration,
234244
DynamicEntity dynamicEntity, Page<DynamicEntity> selectResult) {
235245
List<DynamicEntity> content = new ArrayList<>();
236246

237247
Pageable pageable = selectResult.getPageable();
238248
int itemsSize = pageable.getPageSize();
249+
239250
for (int i = 0; i < itemsSize; i++) {
240251
final int index = i;
241252
var result = new DynamicEntity();
@@ -271,7 +282,7 @@ public DatabasePluginConfiguration getDatabaseConfiguration(String action, Dynam
271282

272283
return mapper.convertValue(
273284
access.get(action),
274-
new TypeReference<DatabasePluginConfiguration>() {
285+
new TypeReference<>() {
275286
});
276287
}
277288
}

dpp/src/main/java/io/github/linagora/linid/im/dpp/service/CrudService.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,17 @@ public interface CrudService {
6868
* @param dynamicEntity the dynamic entity containing the table name in its configuration
6969
* @return the matching entity, or null if not found
7070
*/
71-
DynamicEntity selectOne(TaskExecutionContext context, ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, String id, DynamicEntity dynamicEntity);
71+
DynamicEntity selectOne(TaskExecutionContext context, ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, Object id, DynamicEntity dynamicEntity);
7272

7373
/**
7474
* Inserts a new row into the given table.
7575
*
7676
* @param config the provider configuration (datasource credentials, pool settings)
7777
* @param databaseConfiguration the database configuration containing the table name
7878
* @param dynamicEntity the dynamic entity containing the table name and values in its configuration
79-
* @return the number of rows affected
79+
* @return the inserted entity
8080
*/
81-
int insert(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, DynamicEntity dynamicEntity);
81+
DynamicEntity insert(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, DynamicEntity dynamicEntity);
8282

8383
/**
8484
* Updates rows in the given table where the id column matches the given value.
@@ -87,9 +87,9 @@ public interface CrudService {
8787
* @param databaseConfiguration the database configuration containing the table name
8888
* @param id the value the identifier column must match
8989
* @param dynamicEntity the dynamic entity containing the table name and values in its configuration
90-
* @return the number of rows affected
90+
* @return the updated entity
9191
*/
92-
int update(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, String id, DynamicEntity dynamicEntity);
92+
DynamicEntity update(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, Object id, DynamicEntity dynamicEntity);
9393

9494
/**
9595
* Deletes rows from the given table where the id column matches the given value.
@@ -98,7 +98,6 @@ public interface CrudService {
9898
* @param databaseConfiguration the database configuration containing the table name
9999
* @param id the value the identifier column must match
100100
* @param dynamicEntity the dynamic entity containing the table name in its configuration
101-
* @return the number of rows affected
102101
*/
103-
int delete(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, String id, DynamicEntity dynamicEntity);
102+
void delete(ProviderConfiguration config, DatabasePluginConfiguration databaseConfiguration, Object id, DynamicEntity dynamicEntity);
104103
}

0 commit comments

Comments
 (0)