﻿using System;

using Composite.Data;
using Composite.Data.Hierarchy;
using Composite.Data.Hierarchy.DataAncestorProviders;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using Composite.Data.Validation.Validators;

namespace Demo
{
    [AutoUpdateble]
    [DataAncestorProvider(typeof(NoAncestorDataAncestorProvider))]
    [KeyPropertyName("Id")]
    [LabelPropertyName("Title")]
    [DataScope(DataScopeIdentifier.PublicName)]
    [ImmutableTypeId("{B51EE692-8360-4F6A-B0B9-E16A7E74EEBE}")]
    public interface IMovie : IData
    {
        [StoreFieldType(PhysicalStoreFieldType.Guid)]
        [ImmutableFieldId("{F3E6F73F-B2A4-48FA-9D7B-D0D2A578C2EB}")]
        Guid Id { get; set; }

        [NotNullValidator()]
        [StringSizeValidator(1, 64)]
        [StoreFieldType(PhysicalStoreFieldType.String, 64)]
        [ImmutableFieldId("{31F38EC0-EA21-4E7F-82E8-6BAD22AADBA6}")]
        string Title { get; set; }

        [ForeignKey(typeof(Demo.IGenre), "Id", AllowCascadeDeletes = true)]
        [StoreFieldType(PhysicalStoreFieldType.Guid)]
        [ImmutableFieldId("{5F1A6735-6BC1-435E-8E91-1D3ACE690697}")]
        Guid Genre { get; set; }

        [StoreFieldType(PhysicalStoreFieldType.String, 1042)]
        [ImmutableFieldId("{D51790D7-1B04-4B0E-B19F-9F23E73DE645}")]
        string Description { get; set; }

        [StoreFieldType(PhysicalStoreFieldType.String, 32)]
        [ImmutableFieldId("{3D480D76-CD0E-473E-BABF-9B8CCFBC4455}")]
        string Country { get; set; }
    }

}
