@@ -138,51 +138,53 @@ default void setFields(Dataset ds) {
138138 Optional <DatasetRow > getUuid (String namespaceName , String datasetName );
139139
140140 @ SqlQuery (
141- "WITH selected_datasets AS (\n "
142- + " SELECT d.*\n "
143- + " FROM datasets d\n "
144- + " WHERE d.namespace_name = :namespaceName\n "
145- + " ORDER BY d.name\n "
146- + " LIMIT :limit OFFSET :offset\n "
147- + "), dataset_runs AS (\n "
148- + " SELECT d.uuid, d.name, d.namespace_name, dv.run_uuid, dv.lifecycle_state, event_time, event\n "
149- + " FROM selected_datasets d\n "
150- + " INNER JOIN dataset_versions dv ON dv.uuid = d.current_version_uuid\n "
151- + " LEFT JOIN LATERAL (\n "
152- + " SELECT run_uuid, event_time, event FROM lineage_events\n "
153- + " WHERE run_uuid = dv.run_uuid\n "
154- + " ) e ON e.run_uuid = dv.run_uuid\n "
155- + " UNION\n "
156- + " SELECT d.uuid, d.name, d.namespace_name, rim.run_uuid, lifecycle_state, event_time, event\n "
157- + " FROM selected_datasets d\n "
158- + " INNER JOIN dataset_versions dv ON dv.uuid = d.current_version_uuid\n "
159- + " LEFT JOIN runs_input_mapping rim ON dv.uuid = rim.dataset_version_uuid\n "
160- + " LEFT JOIN LATERAL (\n "
161- + " SELECT run_uuid, event_time, event FROM lineage_events\n "
162- + " WHERE run_uuid = rim.run_uuid\n "
163- + " ) e ON e.run_uuid = rim.run_uuid\n "
164- + ")\n "
165- + "SELECT d.*, dv.fields, dv.lifecycle_state, sv.schema_location, t.tags, facets\n "
166- + "FROM selected_datasets d\n "
167- + "LEFT JOIN dataset_versions dv ON d.current_version_uuid = dv.uuid\n "
168- + "LEFT JOIN stream_versions AS sv ON sv.dataset_version_uuid = dv.uuid\n "
169- + "LEFT JOIN (\n "
170- + " SELECT ARRAY_AGG(t.name) AS tags, m.dataset_uuid\n "
171- + " FROM tags AS t\n "
172- + " INNER JOIN datasets_tag_mapping AS m ON m.tag_uuid = t.uuid\n "
173- + " GROUP BY m.dataset_uuid\n "
174- + ") t ON t.dataset_uuid = d.uuid\n "
175- + "LEFT JOIN (\n "
176- + " SELECT d2.uuid AS dataset_uuid, JSONB_AGG(ds->'facets' ORDER BY event_time) AS facets\n "
177- + " FROM dataset_runs d2,\n "
178- + " jsonb_array_elements(coalesce(d2.event -> 'inputs', '[]'::jsonb) || coalesce(d2.event -> 'outputs', '[]'::jsonb)) AS ds\n "
179- + " WHERE d2.run_uuid = d2.run_uuid\n "
180- + " AND ds -> 'facets' IS NOT NULL\n "
181- + " AND ds ->> 'name' = d2.name\n "
182- + " AND ds ->> 'namespace' = d2.namespace_name\n "
183- + " GROUP BY d2.uuid\n "
184- + ") f ON f.dataset_uuid = d.uuid\n "
185- + "ORDER BY d.name" )
141+ """
142+ WITH selected_datasets AS (
143+ SELECT d.*
144+ FROM datasets d
145+ WHERE d.namespace_name = :namespaceName
146+ AND d.is_deleted is false
147+ ORDER BY d.name
148+ LIMIT :limit OFFSET :offset
149+ ), dataset_runs AS (
150+ SELECT d.uuid, d.name, d.namespace_name, dv.run_uuid, dv.lifecycle_state, event_time, event
151+ FROM selected_datasets d
152+ INNER JOIN dataset_versions dv ON dv.uuid = d.current_version_uuid
153+ LEFT JOIN LATERAL (
154+ SELECT run_uuid, event_time, event FROM lineage_events
155+ WHERE run_uuid = dv.run_uuid
156+ ) e ON e.run_uuid = dv.run_uuid
157+ UNION
158+ SELECT d.uuid, d.name, d.namespace_name, rim.run_uuid, lifecycle_state, event_time, event
159+ FROM selected_datasets d
160+ INNER JOIN dataset_versions dv ON dv.uuid = d.current_version_uuid
161+ LEFT JOIN runs_input_mapping rim ON dv.uuid = rim.dataset_version_uuid
162+ LEFT JOIN LATERAL (
163+ SELECT run_uuid, event_time, event FROM lineage_events
164+ WHERE run_uuid = rim.run_uuid
165+ ) e ON e.run_uuid = rim.run_uuid
166+ )
167+ SELECT d.*, dv.fields, dv.lifecycle_state, sv.schema_location, t.tags, facets
168+ FROM selected_datasets d
169+ LEFT JOIN dataset_versions dv ON d.current_version_uuid = dv.uuid
170+ LEFT JOIN stream_versions AS sv ON sv.dataset_version_uuid = dv.uuid
171+ LEFT JOIN (
172+ SELECT ARRAY_AGG(t.name) AS tags, m.dataset_uuid
173+ FROM tags AS t
174+ INNER JOIN datasets_tag_mapping AS m ON m.tag_uuid = t.uuid
175+ GROUP BY m.dataset_uuid
176+ ) t ON t.dataset_uuid = d.uuid
177+ LEFT JOIN (
178+ SELECT d2.uuid AS dataset_uuid, JSONB_AGG(ds->'facets' ORDER BY event_time) AS facets
179+ FROM dataset_runs d2,
180+ jsonb_array_elements(coalesce(d2.event -> 'inputs', '[]'::jsonb) || coalesce(d2.event -> 'outputs', '[]'::jsonb)) AS ds
181+ WHERE d2.run_uuid = d2.run_uuid
182+ AND ds -> 'facets' IS NOT NULL
183+ AND ds ->> 'name' = d2.name
184+ AND ds ->> 'namespace' = d2.namespace_name
185+ GROUP BY d2.uuid
186+ ) f ON f.dataset_uuid = d.uuid
187+ ORDER BY d.name""" )
186188 List <Dataset > findAll (String namespaceName , int limit , int offset );
187189
188190 @ SqlQuery ("SELECT count(*) FROM datasets" )
@@ -284,6 +286,16 @@ DatasetRow upsert(
284286 String name ,
285287 String physicalName );
286288
289+ @ SqlQuery (
290+ """
291+ UPDATE datasets
292+ SET is_deleted = true
293+ WHERE namespace_name = :namespaceName
294+ AND name = :name
295+ RETURNING *
296+ """ )
297+ Optional <DatasetRow > softDelete (String namespaceName , String name );
298+
287299 @ Transaction
288300 default Dataset upsertDatasetMeta (
289301 NamespaceName namespaceName , DatasetName datasetName , DatasetMeta datasetMeta ) {
0 commit comments