Add meme-adding logic

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-07-21 09:46:13 +03:00
parent 1b2ce96c5e
commit 4b601872bc
40 changed files with 1037 additions and 324 deletions

View File

@@ -1,43 +1,34 @@
import { Realm } from '@realm/react';
import { BSON } from 'realm';
import { BSON, Object, ObjectSchema } from 'realm';
import { Meme } from './meme';
import { generateRandomColor } from '../utilities';
class Tag extends Realm.Object<Tag> {
// eslint-disable-next-line @typescript-eslint/naming-convention
class Tag extends Object<Tag> {
id!: BSON.UUID;
name!: string;
color!: string;
memes!: Realm.List<Meme>;
memes!: Meme[] | Set<Meme>;
memesLength!: number;
dateCreated!: Date;
dateModified!: Date;
dateUsed?: Date;
timesUsed!: number;
static schema: Realm.ObjectSchema = {
static schema: ObjectSchema = {
name: 'Tag',
primaryKey: 'id',
properties: {
id: { type: 'uuid', default: () => new BSON.UUID() },
name: { type: 'string', indexed: true },
color: 'string',
memes: { type: 'list', objectType: 'Meme', default: [] },
color: { type: 'string', default: () => generateRandomColor() },
memes: { type: 'set', objectType: 'Meme', default: [] },
memesLength: { type: 'int', default: 0 },
dateCreated: { type: 'date', default: () => new Date() },
dateModified: { type: 'date', default: () => new Date() },
dateUsed: 'date?',
timesUsed: { type: 'int', default: 0 },
},
};
}
const deleteTag = (realm: Realm, tag: Tag) => {
realm.write(() => {
realm.delete(tag);
});
};
const deleteAllTags = (realm: Realm) => {
realm.write(() => {
realm.delete(realm.objects<Tag>('Tag'));
});
};
export { Tag, deleteTag, deleteAllTags };
export { Tag };