52 lines
756 B
TypeScript
52 lines
756 B
TypeScript
import AbstractModel from './abstractModel'
|
|
|
|
export interface IFile {
|
|
id: number
|
|
mime: string
|
|
name: string
|
|
size: number
|
|
created: Date
|
|
}
|
|
|
|
export default class FileModel extends AbstractModel implements IFile {
|
|
declare id: number
|
|
declare mime: string
|
|
declare name: string
|
|
declare size: number
|
|
created: Date
|
|
|
|
constructor(data) {
|
|
super(data)
|
|
this.created = new Date(this.created)
|
|
}
|
|
|
|
defaults() {
|
|
return {
|
|
id: 0,
|
|
mime: '',
|
|
name: '',
|
|
size: 0,
|
|
created: null,
|
|
}
|
|
}
|
|
|
|
getHumanSize() {
|
|
const sizes = {
|
|
0: 'B',
|
|
1: 'KB',
|
|
2: 'MB',
|
|
3: 'GB',
|
|
4: 'TB',
|
|
}
|
|
|
|
let it = 0
|
|
let size = this.size
|
|
while (size > 1024) {
|
|
size /= 1024
|
|
it++
|
|
}
|
|
|
|
return Number(Math.round(size + 'e2') + 'e-2') + ' ' + sizes[it]
|
|
}
|
|
}
|