implemented a lot of features
This commit is contained in:
1 parent
62f1767df3
commit
bcb9be5da9
141 files changed
+10705
-385
No files matched your search
@@ -0,0 +1,47 @@
|
||||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
/**
|
||||
* Files of uploaders whose bodies are not fetched right away (ngPost, see
|
||||
* CONCEPT.md D28): one row per file, from the headers alone. The row keeps
|
||||
* the article range, so the file can be found again, and is the queue for
|
||||
* worker:deferred, which fetches one body per file.
|
||||
*/
|
||||
export default class extends BaseSchema {
|
||||
async up() {
|
||||
this.schema.createTable('deferred_files', (table) => {
|
||||
table.bigIncrements('id')
|
||||
table.string('file_key', 40).notNullable().unique()
|
||||
// File name from the subject (random for ngPost).
|
||||
table.text('name').notNullable()
|
||||
table.text('subject').notNullable()
|
||||
table.text('poster').notNullable()
|
||||
// Article numbers are counted in the group where the file was first seen.
|
||||
table.text('group_name').notNullable()
|
||||
table.bigInteger('first_article').notNullable()
|
||||
table.text('first_message_id').notNullable()
|
||||
table.bigInteger('last_article').notNullable()
|
||||
table.integer('article_count').notNullable()
|
||||
table.bigInteger('bytes').notNullable()
|
||||
table.timestamp('posted_at', { useTz: true })
|
||||
table.timestamp('first_seen_at', { useTz: true }).notNullable()
|
||||
table.timestamp('last_seen_at', { useTz: true }).notNullable()
|
||||
// pending → sampled (one body read) or expanded (sent to the body queue) or failed.
|
||||
table.string('status', 16).notNullable().defaultTo('pending')
|
||||
table.timestamp('processed_at', { useTz: true })
|
||||
// From the sampled body.
|
||||
table.text('yenc_name')
|
||||
table.bigInteger('size')
|
||||
table.integer('total_parts')
|
||||
table.integer('sampled_part')
|
||||
table.string('content_type', 16)
|
||||
table.boolean('encrypted')
|
||||
table.text('error')
|
||||
table.index(['status', 'last_seen_at'])
|
||||
table.index(['first_seen_at'])
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable('deferred_files')
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user