48 lines
1007 B
TypeScript
48 lines
1007 B
TypeScript
import { Realm } from '@realm/react';
|
|
import { Tag } from './tag';
|
|
|
|
enum MEME_TYPE {
|
|
IMAGE = 'IMAGE',
|
|
GIF = 'GIF',
|
|
ALMBUM = 'ALMBUM',
|
|
VIDEO = 'VIDEO',
|
|
AUDIO = 'AUDIO',
|
|
TEXT = 'TEXT',
|
|
}
|
|
|
|
class Meme extends Realm.Object<Meme> {
|
|
id!: Realm.BSON.UUID;
|
|
type!: MEME_TYPE;
|
|
uri!: string;
|
|
size!: number;
|
|
title!: string;
|
|
description?: string;
|
|
isFavorite!: boolean;
|
|
tags!: Realm.List<Tag>;
|
|
dateCreated!: Date;
|
|
dateModified!: Date;
|
|
dateUsed?: Date;
|
|
timesUsed!: number;
|
|
|
|
static schema: Realm.ObjectSchema = {
|
|
name: 'Meme',
|
|
primaryKey: 'id',
|
|
properties: {
|
|
id: 'uuid',
|
|
type: { type: 'string', indexed: true },
|
|
uri: 'string',
|
|
size: 'int',
|
|
title: 'string',
|
|
description: 'string?',
|
|
isFavorite: { type: 'bool', indexed: true, default: false },
|
|
tags: 'Tag[]',
|
|
dateCreated: 'date',
|
|
dateModified: 'date',
|
|
dateUsed: 'date?',
|
|
timesUsed: { type: 'int', default: 0 },
|
|
},
|
|
};
|
|
}
|
|
|
|
export { MEME_TYPE, Meme };
|