Add meme-adding logic
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -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 };
|
||||
|
Reference in New Issue
Block a user