From 07d90394c613939f550d5f510804931c4a6c9773 Mon Sep 17 00:00:00 2001 From: phmai Date: Fri, 13 Sep 2024 16:13:54 +0200 Subject: [PATCH] partial fix --- .../kotlin/naksha/psql/PgStorage.kt | 3 ++ .../psql/executors/write/DeleteFeature.kt | 30 ++++++++----------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/PgStorage.kt b/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/PgStorage.kt index dafdecea0..f00b6197e 100644 --- a/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/PgStorage.kt +++ b/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/PgStorage.kt @@ -521,6 +521,9 @@ WHERE relname IN ('$NAKSHA_TXN_SEQ', '$NAKSHA_MAP_SEQ') AND relnamespace=${defau mode: FetchMode = FETCH_ALL ): List { TODO("Implement getLatestTuples") + // val readFeatures = ReadFeatures(collection.id) + // readFeatures.featureIds.add(featureId) + // val response = PgReader(session, readFeatures).execute().proxy(SuccessResponse::class) } /** diff --git a/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/executors/write/DeleteFeature.kt b/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/executors/write/DeleteFeature.kt index c9d475183..e573b8841 100644 --- a/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/executors/write/DeleteFeature.kt +++ b/here-naksha-lib-psql/src/commonMain/kotlin/naksha/psql/executors/write/DeleteFeature.kt @@ -20,26 +20,22 @@ class DeleteFeature(session: PgSession) : UpdateFeature(session) { override fun execute(collection: PgCollection, write: Write): Tuple { val featureId = write.featureId ?: throw NakshaException(NakshaError.ILLEGAL_ARGUMENT, "No feature ID provided") - var feature:NakshaFeature = null - val readFeatures = ReadFeatures(collection.id) - readFeatures.featureIds.add(featureId) - val response = PgReader(session, readFeatures).execute().proxy(SuccessResponse::class) - if (!response.features.isEmpty()) - { - feature = response.features.first() - } - session.storage.getLatestTuples() + val tuples = session.storage.getLatestTuples( + conn = session.usePgConnection(), + mapId = session.map, + collectionId = collection.id, + featureIds = arrayOf(featureId) + ) + + if (tuples.isEmpty()) { + TODO("feature does not exist in head, should somehow return delete success but with a tuple") + } + + val tuple = tuples.first() val tupleNumber = newFeatureTupleNumber(collection, featureId, session) val flags = resolveFlags(collection, session).action(Action.DELETED) - val tuple = tuple( - session.storage, - tupleNumber, - feature, - metadata(tupleNumber, feature, featureId, flags), - write.attachment, - flags - ) + // Only modify head, hst and del tables if feature exists if (feature != null) { // If hst table enabled