full working application and initial commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { authTables } from '@convex-dev/auth/server';
|
||||
import { defineSchema, defineTable } from 'convex/server';
|
||||
import { v } from 'convex/values';
|
||||
import {
|
||||
dashboardRangeValidator,
|
||||
editorModeValidator,
|
||||
moodValidator,
|
||||
themePreferenceValidator
|
||||
} from './validators.js';
|
||||
|
||||
export default defineSchema({
|
||||
...authTables,
|
||||
entries: defineTable({
|
||||
owner: v.string(),
|
||||
title: v.string(),
|
||||
body: v.string(),
|
||||
plainText: v.string(),
|
||||
searchText: v.string(),
|
||||
mood: moodValidator,
|
||||
entryDate: v.string(),
|
||||
tagNames: v.array(v.string()),
|
||||
tagSlugs: v.array(v.string()),
|
||||
pinned: v.boolean(),
|
||||
archived: v.boolean(),
|
||||
createdAt: v.number(),
|
||||
updatedAt: v.number()
|
||||
})
|
||||
.index('by_owner_and_entryDate', ['owner', 'entryDate'])
|
||||
.index('by_owner_and_updatedAt', ['owner', 'updatedAt'])
|
||||
.index('by_owner_and_mood_and_entryDate', ['owner', 'mood', 'entryDate'])
|
||||
.searchIndex('search_entries', {
|
||||
searchField: 'searchText',
|
||||
filterFields: ['owner']
|
||||
}),
|
||||
tags: defineTable({
|
||||
owner: v.string(),
|
||||
name: v.string(),
|
||||
slug: v.string(),
|
||||
color: v.string(),
|
||||
usageCount: v.number(),
|
||||
createdAt: v.number(),
|
||||
updatedAt: v.number()
|
||||
})
|
||||
.index('by_owner_and_slug', ['owner', 'slug'])
|
||||
.index('by_owner_and_name', ['owner', 'name'])
|
||||
.index('by_owner_and_usageCount', ['owner', 'usageCount']),
|
||||
entryTags: defineTable({
|
||||
owner: v.string(),
|
||||
entryId: v.id('entries'),
|
||||
tagId: v.id('tags'),
|
||||
tagSlug: v.string(),
|
||||
createdAt: v.number()
|
||||
})
|
||||
.index('by_entry', ['entryId'])
|
||||
.index('by_owner_and_tagSlug', ['owner', 'tagSlug'])
|
||||
.index('by_owner_and_entryId_and_tagSlug', ['owner', 'entryId', 'tagSlug']),
|
||||
settings: defineTable({
|
||||
owner: v.string(),
|
||||
theme: themePreferenceValidator,
|
||||
defaultMood: moodValidator,
|
||||
editorMode: editorModeValidator,
|
||||
dashboardRange: dashboardRangeValidator,
|
||||
updatedAt: v.number()
|
||||
}).index('by_owner', ['owner'])
|
||||
});
|
||||
Reference in New Issue
Block a user