This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
terminally-online/src/database/meme.ts
Nikolaos Karaolidis de44828434 Add tag sorting
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2023-07-15 13:09:53 +03:00

59 lines
1.3 KiB
TypeScript

import { Realm } from '@realm/react';
import { Tag } from './tag';
enum MEME_TYPE {
IMAGE = 'Image',
GIF = 'GIF',
VIDEO = 'Video',
AUDIO = 'Audio',
ALBUM = 'Album',
TEXT = 'Text',
}
const memeTypePlural = {
[MEME_TYPE.IMAGE]: 'Images',
[MEME_TYPE.GIF]: 'GIFs',
[MEME_TYPE.VIDEO]: 'Videos',
[MEME_TYPE.AUDIO]: 'Audio',
[MEME_TYPE.ALBUM]: 'Albums',
[MEME_TYPE.TEXT]: 'Text',
};
class Meme extends Realm.Object<Meme> {
id!: Realm.BSON.UUID;
type!: MEME_TYPE;
uri!: Realm.List<string>;
size!: number;
title!: string;
description?: string;
isFavorite!: boolean;
tags!: Realm.List<Tag>;
tagsLength!: number;
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[]',
tagsLength: { type: 'int', default: 0 },
dateCreated: { type: 'date', default: new Date() },
dateModified: { type: 'date', default: new Date() },
dateUsed: 'date?',
timesUsed: { type: 'int', default: 0 },
},
};
}
export { MEME_TYPE, memeTypePlural, Meme };