movie
import {defineArrayMember, defineField, defineType} from 'sanity'
export const movie = defineType({
name: 'movie',
title: 'Movie',
type: 'document',
fields: [
defineField({
title: 'Title',
name: 'title',
type: 'string',
}),
defineField({
title: 'Genres',
name: 'genres',
type: 'array',
of: [
{
type: 'string',
name: 'genre',
},
],
}),
defineField({
title: 'ReleaseDate',
name: 'releaseDate',
type: 'date',
}),
defineField({
title: 'ProductionCountries',
name: 'productionCountries',
type: 'string',
}),
defineField({
title: 'RunTime',
name: 'runtime',
type: 'number',
}),
defineField({
title: 'Certification',
name: 'certification',
type: 'string',
}),
defineField({
title: 'PosterPath',
name: 'posterPath',
type: 'string',
}),
defineField({
title: 'Overview',
name: 'overview',
type: 'text',
}),
defineField({
title: 'Reviews',
name: 'reviews',
type: 'array',
of: [
defineArrayMember({
type: 'reference',
to: [
{
type: 'review',
},
],
}),
],
}),
defineField({
title: 'Cast',
name: 'cast',
type: 'array',
of: [{type: 'string'}],
}),
],
})
review
import {defineField, defineType} from 'sanity'
export const review = defineType({
name: 'review',
title: 'Review',
type: 'document',
fields: [
defineField({
title: 'Author',
name: 'author',
type: 'reference',
to: [{type: 'user'}],
}),
defineField({
title: 'CreatedAt',
name: 'createdAt',
type: 'datetime',
}),
defineField({
title: 'updatedAt',
name: 'updatedAt',
type: 'datetime',
}),
defineField({
title: 'Movie',
name: 'movie',
type: 'reference',
to: [{type: 'movie'}],
}),
defineField({
title: 'content',
name: 'content',
type: 'text',
}),
defineField({
title: 'Rating',
name: 'rating',
type: 'number',
}),
],
})
user
import {defineArrayMember, defineField, defineType} from 'sanity'
// username, name, avatar, email, reviews, ratings
export const user = defineType({
title: 'User',
name: 'user',
type: 'document',
fields: [
defineField({
title: 'Username',
name: 'username',
type: 'string',
}),
defineField({
title: 'Name',
name: 'name',
type: 'string',
}),
defineField({
title: 'Email',
name: 'email',
type: 'string',
}),
defineField({
title: 'avatar',
name: 'Avatar',
type: 'string',
}),
defineField({
title: 'Reviews',
name: 'reviews',
type: 'array',
of: [
defineArrayMember({
type: 'reference',
to: [
{
type: 'review',
},
],
}),
],
}),
defineField({
title: 'Following',
name: 'following',
type: 'array',
of: [
defineArrayMember({
type: 'reference',
to: [
{
type: 'user',
},
],
}),
],
validation: (Rule) => Rule.unique(),
}),
defineField({
title: 'Followers',
name: 'followers',
type: 'array',
of: [
defineArrayMember({
type: 'reference',
to: [
{
type: 'user',
},
],
}),
],
validation: (Rule) => Rule.unique(),
}),
defineField({
title: 'Collection',
name: 'collection',
type: 'array',
of: [
{
type: 'reference',
to: [
{
type: 'movie',
},
],
},
],
validation: (Rule) => Rule.unique(),
}),
],
preview: {
select: {
title: 'name',
subtitle: 'username',
},
},
})