feat: purge history utility
This commit is contained in:
parent
8490fc1267
commit
ef739de970
@ -8,7 +8,9 @@
|
|||||||
v-btn(outlined, color='primary', @click='rebuildTree', :disabled='loading').ml-0.mt-3
|
v-btn(outlined, color='primary', @click='rebuildTree', :disabled='loading').ml-0.mt-3
|
||||||
v-icon(left) mdi-gesture-double-tap
|
v-icon(left) mdi-gesture-double-tap
|
||||||
span Proceed
|
span Proceed
|
||||||
|
|
||||||
v-divider.my-5
|
v-divider.my-5
|
||||||
|
|
||||||
.subtitle-1.pb-3.primary--text Rerender All Pages
|
.subtitle-1.pb-3.primary--text Rerender All Pages
|
||||||
.body-2 All pages will be rendered again. Useful if internal links are broken or the rendering pipeline has changed.
|
.body-2 All pages will be rendered again. Useful if internal links are broken or the rendering pipeline has changed.
|
||||||
v-btn(outlined, color='primary', @click='rerenderPages', :disabled='loading', :loading='isRerendering').ml-0.mt-3
|
v-btn(outlined, color='primary', @click='rerenderPages', :disabled='loading', :loading='isRerendering').ml-0.mt-3
|
||||||
@ -37,7 +39,9 @@
|
|||||||
rounded
|
rounded
|
||||||
:buffer-value='0'
|
:buffer-value='0'
|
||||||
)
|
)
|
||||||
|
|
||||||
v-divider.my-5
|
v-divider.my-5
|
||||||
|
|
||||||
.subtitle-1.pb-3.pl-0.primary--text Migrate all pages to target locale
|
.subtitle-1.pb-3.pl-0.primary--text Migrate all pages to target locale
|
||||||
.body-2 If you created content before selecting a different locale and activating the namespacing capabilities, you may want to transfer all content to the base locale.
|
.body-2 If you created content before selecting a different locale and activating the namespacing capabilities, you may want to transfer all content to the base locale.
|
||||||
.body-2.red--text: strong This operation is destructive and cannot be reversed! Make sure you have proper backups!
|
.body-2.red--text: strong This operation is destructive and cannot be reversed! Make sure you have proper backups!
|
||||||
@ -65,6 +69,25 @@
|
|||||||
v-btn(outlined, color='primary', @click='migrateToLocale', :disabled='loading').ml-0.mt-3
|
v-btn(outlined, color='primary', @click='migrateToLocale', :disabled='loading').ml-0.mt-3
|
||||||
v-icon(left) mdi-gesture-double-tap
|
v-icon(left) mdi-gesture-double-tap
|
||||||
span Proceed
|
span Proceed
|
||||||
|
|
||||||
|
v-divider.my-5
|
||||||
|
|
||||||
|
.subtitle-1.pb-3.pl-0.primary--text Purge Page History
|
||||||
|
.body-2 You may want to purge old history for pages to reduce database usage.
|
||||||
|
.body-2 This operation only affects the database and not any history saved by a storage module (e.g. git version history)
|
||||||
|
v-toolbar.radius-7.mt-5(flat, :color='$vuetify.theme.dark ? `grey darken-3-d5` : `grey lighten-4`', height='80')
|
||||||
|
v-select(
|
||||||
|
label='Delete history older than...'
|
||||||
|
outlined
|
||||||
|
hide-details
|
||||||
|
:items='purgeHistoryOptions'
|
||||||
|
item-text='title'
|
||||||
|
item-value='key'
|
||||||
|
v-model='purgeHistorySelection'
|
||||||
|
)
|
||||||
|
v-btn(outlined, color='primary', @click='purgeHistory', :disabled='loading').ml-0.mt-3
|
||||||
|
v-icon(left) mdi-gesture-double-tap
|
||||||
|
span Proceed
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -90,7 +113,18 @@ export default {
|
|||||||
renderTotal: 0,
|
renderTotal: 0,
|
||||||
renderCurrentPath: '',
|
renderCurrentPath: '',
|
||||||
sourceLocale: '',
|
sourceLocale: '',
|
||||||
targetLocale: ''
|
targetLocale: '',
|
||||||
|
purgeHistorySelection: 'P1Y',
|
||||||
|
purgeHistoryOptions: [
|
||||||
|
{ key: 'P1D', title: 'Today' },
|
||||||
|
{ key: 'P1M', title: '1 month' },
|
||||||
|
{ key: 'P3M', title: '3 months' },
|
||||||
|
{ key: 'P6M', title: '6 months' },
|
||||||
|
{ key: 'P1Y', title: '1 year' },
|
||||||
|
{ key: 'P2Y', title: '2 years' },
|
||||||
|
{ key: 'P3Y', title: '3 years' },
|
||||||
|
{ key: 'P5Y', title: '5 years' }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -231,6 +265,49 @@ export default {
|
|||||||
|
|
||||||
this.$store.commit(`loadingStop`, 'admin-utilities-content-migratelocale')
|
this.$store.commit(`loadingStop`, 'admin-utilities-content-migratelocale')
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
},
|
||||||
|
async purgeHistory () {
|
||||||
|
this.loading = true
|
||||||
|
this.$store.commit(`loadingStart`, 'admin-utilities-content-purgehistory')
|
||||||
|
|
||||||
|
try {
|
||||||
|
const respRaw = await this.$apollo.mutate({
|
||||||
|
mutation: gql`
|
||||||
|
mutation ($olderThan: String!) {
|
||||||
|
pages {
|
||||||
|
purgeHistory (
|
||||||
|
olderThan: $olderThan
|
||||||
|
) {
|
||||||
|
responseResult {
|
||||||
|
errorCode
|
||||||
|
message
|
||||||
|
slug
|
||||||
|
succeeded
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
variables: {
|
||||||
|
olderThan: this.purgeHistorySelection
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const resp = _.get(respRaw, 'data.pages.purgeHistory.responseResult', {})
|
||||||
|
if (resp.succeeded) {
|
||||||
|
this.$store.commit('showNotification', {
|
||||||
|
message: `Purged history successfully.`,
|
||||||
|
style: 'success',
|
||||||
|
icon: 'check'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
throw new Error(resp.message)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.$store.commit('pushGraphError', err)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$store.commit(`loadingStop`, 'admin-utilities-content-purgehistory')
|
||||||
|
this.loading = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -562,11 +562,24 @@ module.exports = {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
return graphHelper.generateError(err)
|
return graphHelper.generateError(err)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Purge history
|
||||||
|
*/
|
||||||
|
async purgeHistory (obj, args, context) {
|
||||||
|
try {
|
||||||
|
await WIKI.models.pageHistory.purge(args.olderThan)
|
||||||
|
return {
|
||||||
|
responseResult: graphHelper.generateSuccess('Page history purged successfully.')
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
return graphHelper.generateError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Page: {
|
Page: {
|
||||||
async tags (obj) {
|
async tags (obj) {
|
||||||
return await WIKI.models.pages.relatedQuery('tags').for(obj.id)
|
return WIKI.models.pages.relatedQuery('tags').for(obj.id)
|
||||||
}
|
}
|
||||||
// comments(pg) {
|
// comments(pg) {
|
||||||
// return pg.$relatedQuery('comments')
|
// return pg.$relatedQuery('comments')
|
||||||
|
@ -149,6 +149,10 @@ type PageMutation {
|
|||||||
pageId: Int!
|
pageId: Int!
|
||||||
versionId: Int!
|
versionId: Int!
|
||||||
): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
|
): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
|
||||||
|
|
||||||
|
purgeHistory (
|
||||||
|
olderThan: String!
|
||||||
|
): DefaultResponse @auth(requires: ["manage:system"])
|
||||||
}
|
}
|
||||||
|
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
const Model = require('objection').Model
|
const Model = require('objection').Model
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
|
const { DateTime, Duration } = require('luxon')
|
||||||
|
|
||||||
/* global WIKI */
|
/* global WIKI */
|
||||||
|
|
||||||
@ -228,4 +229,15 @@ module.exports = class PageHistory extends Model {
|
|||||||
total: history.total
|
total: history.total
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Purge history older than X
|
||||||
|
*
|
||||||
|
* @param {String} olderThan ISO 8601 Duration
|
||||||
|
*/
|
||||||
|
static async purge (olderThan) {
|
||||||
|
const dur = Duration.fromISO(olderThan)
|
||||||
|
const olderThanISO = DateTime.utc().minus(dur)
|
||||||
|
await WIKI.models.pageHistory.query().where('versionDate', '<', olderThanISO.toISO()).del()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user