Closed dezhidki closed 1 week ago
Varmuudeksi, tee tyhjä dokumentti kantaan: Document(ID).create() (import timApp.document.document.Document)
Document.create() luo tiedostojärjestelmään hakemiston, tätä ei varmaan haluta tehdä koska juurihan se poistettiin? Document-luokkaa ei myöskään ole määritetty kantaan.
Minusta se kannattaa tehdä tiedostojärjestelmään, jotta meillä on ainakin toimiva dokumentti. Eli jos jostain syystä haluttaisiin tehdä jotain dokumentille, niin ainakaan mikään koodi ei mene rikki oletukseen, että dokumentti kannassa tarkoittaa, että se on myös tiedostojärjestelmässä.
Mutta kannattaa testata, meneekö mitään rikki jos dokumenttia ei ole tiedostojärjestelmässä ja sitten esim. ylläpito yrittää avata dokumentin ID:llä.
Document-luokkaa ei ole peruskannassa, sillä se on dokumentin esitys tiedostojärjestelmässä.
Admin CLI:hin (esim. timApp.admin.item_cli) tulee lisätä komento, jolla kansiot ja dokumentit voi poistaa TIMista kokonaan.
Aivan alkuun riittää, että PostgreSQL-kantaan jää merkintä dokumentin/kansion olemassaolosta, mutta siihen ei kukaan pääse. Sitten ajan mukaan tähän voi liittää muiden tietojen poisto, kuten velppien, vastausten jne. Sen sijaan varsinaisesta dokumenttikannasta dokumentin sisältö poistetaan kokonaan.
Alustava ajatus algoritmille (kokeilin käsin lokaalisti, näytti toimivan):
Syöte:
ID
ID
deleted_ID
, missäID
on poistettava IDID
Dokumentti
ID
(tämä poistaa aliakset)roskis/$deleted_ID
, jossaID
on poistetun kohteen IDID
get_files_path()
(importtaa timApp.timdb.dbaccess) ja poista lohkot sekä dokumenttiget_files_path() / "pars" / ID
sisältää poistettavan dokumentin lohkot -> koko kansio voi poistaaget_files_path() / "docs" / ID
sisältää dokumentin versiot ja muutoslokin -> koko kansio voi poistaaDocument(ID).create()
(import timApp.document.document.Document)Translation
-taulusta kaikki rivit, jossaTranslation.src_docid
onID
Kansio
ID
ID
on poistettava ID ja Folder.location muotoon "roskis" (TRASH_FOLDER_PATH)