Exemple #1
0
        public Result GetChildren(Folder folder, ReadType readType, out IEnumerable<Folder> folders, out IEnumerable<File> files)
        {
            if (folder == null) throw new ArgumentNullException("folder");
            folders = new List<Folder>();
            files = new List<File>();

            SqlExpressionVisitor<Folder> folderEV = OrmLiteConfig.DialectProvider.ExpressionVisitor<Folder>();
            folderEV.Where(f => f.ParentFolderId == folder.Id);
            if (readType == ReadType.Default) folderEV.Where(f => f.IsDeleted == false);
            if (readType == ReadType.OnlyDeleted) folderEV.Where(f => f.IsDeleted == true);
            folders = db.Select<Folder>(folderEV);

            var sql = new StringBuilder(@"
            SELECT f.FileId as Id, f.Name, f.ParentFolderId, f.IsDeleted, f.IsPurged, f.CreatedTimeStamp, f.LastModifiedTimestamp
            ,fv.FileStore, fv.Version as CurrentVersion, fv.Size, d.FullPath + f.Name as FullPath
            FROM [File] f
            INNER JOIN [FileVersion] fv
            ON	fv.FileId = f.FileId
            AND	fv.IsCurrent = 1
            INNER JOIN [Folder] d
            ON  d.FolderId = f.ParentFolderId
            WHERE f.ParentFolderId = {0}".Params(folder.Id));

            if (readType.HasFlag(ReadType.OnlyDeleted)) sql.Append(" AND f.IsDeleted = 1");
            if (readType.HasFlag(ReadType.OnlyNonDeleted)) sql.Append(" AND f.IsDeleted = 0");
            files = db.Query<File>(sql.ToString());

            return Result.Success;
        }