Объект предназначен для работы с файловыми директориями. Он позволяет выполнять операции над директориями, хранимыми на диске: получить директории внутри директории, родительские и все дочерние директории, создать новую директорию, удалить существующую, а также получить файлы, находящиеся в директории.

Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<DirectoryData>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

createChildren

  • Метод создает новую директорию в текущей директории.

       //Пример создания новой директории в папке пользователя. Получаем пользователя, получаем его директорию
       //и в ней создаем новую директорию
        let name = "Имя новой директории";
    
        const user = await System.users.getCurrentUser()
    
        const searchDir = await System.directories.search().
            where(di =>di.__id.eq(user.data.__id)).
            first();
        const newDir = await searchDir.createChildren(name);
    

    Parameters

    • name: string

      Имя новой директории.

    Returns Promise<DirectoryItem>

    Объект Директория.

delete

  • delete(): Promise<number>
  • Метод удаляет текущую директорию.

        // Пример удаления всех директорий, созданных пользователем
        const searchDirs = await System.directories.search().
             where(di => di.__createdBy.eq('<some id>')).
             all();
    
       for (let i = 0; i < searchDirs.length; i += 1) {
         await searchDirs[i].delete();
       }
    

    Returns Promise<number>

    Статус ответа.

fetch

getChildren

  • Метод получает все дочерние директории.

       //Пример получения всех файлов дочерних директорий
       const children = await someDirectory.getChildren();
    
       let allFilesInAllDirs :FileItem[];
    
       parents.forEach(dir => {
         let files = dir.getFiles();
             files.forEach(file =>{
                 allFilesInAllDirs.push(file);
             })
       });
    

    Returns Promise<DirectoryItem[]>

    Массив объектов дочерних директорий.

getChildrens

  • Метод устарел. Метод получает все дочерние директории.

       //Пример получения всех файлов дочерних директорий
       const children = await someDirectory.getChildrens();
    
       let allFilesInAllDirs :FileItem[];
    
       parents.forEach(dir => {
         let files = dir.getFiles();
             files.forEach(file =>{
                 allFilesInAllDirs.push(file);
             })
       });
    
    deprecated

    Метод устарел. Избегайте его использования.

    Returns Promise<DirectoryItem[]>

    Массив объектов дочерних директорий.

getDirs

  • Метод получает папки в директории первого уровня вложенности.

       // Пример получения всех файлов в дочерних директориях
       const dirsInDir = await someDirectory.getDirs();
       let allFilesInAllDirs :FileItem[];
    
       dirsInDir.forEach(dir => {
         let files = dir.getFiles();
             files.forEach(file =>{
                 allFilesInAllDirs.push(file);
             })
       });
    

    Returns Promise<DirectoryItem[]>

    Массив объектов директорий.

getFiles

  • Метод получает файлы из директории.

       // Пример получения ссылкок на файлы в директории
       const filesInDir = await someDirectory.getFiles();
       filesInDir.forEach(file => file.getDownloadUrl());
    

    Returns Promise<FileItem[]>

    Массив объектов файлов из директории.

getParents

  • Метод получает родителей директории отсортированых по порядку вложенности.

       // Пример формирования пути до директории на основе полученных данных о родительских директориях
       const parents = await someDirectory.getParents();
    
       let pathDir string = "/";
    
       parents.forEach(dir => {
         pathDir = pathDir + dir.data.__name + "/"
       });
    

    Returns Promise<DirectoryItem[]>

    Массив объектов родительских директорий.

getPermissions

  • Метод получает права доступа к директории.

    После удачного выполнения запроса прав в ответе будет получен объект TPermissions. Его можно модифицировать или анализировать для различных проверок доступа.

    const searchDir = await System.directories.search().
             where(di => di.__id.eq('<some id>')).
             first();
    const perm = await searchDir.getPermissions();
    

    Returns Promise<TPermissions>

hasPermission

  • hasPermission(orgunit: TPermissionOrgunit, type: PermissionType): Promise<boolean>
  • Метод проверяет наличие права доступа PermissionType.

    Метод позволяет проверить возможность выполнения операции PermissionType с директорией. После использования метод вернёт флаг о результате. Если значение флага true, то пользователь может выполнять запрошенную операцию с директорией. Также можно проверять доступ для элементов оргструктуры.

    const user = Context.data.__createdBy;
    const searchDir = await System.directories.search().
             where(di => di.__id.eq('<some id>')).
             first();
    const canUpdate = await directory.hasPermission(user, PermissionType.DELETE);
    
    if (canUpdate) {
        await searchDir.delete();
    }
    

    Parameters

    • orgunit: TPermissionOrgunit

      Группа или пользователь для проверки.

    • type: PermissionType

      Тип операции.

    Returns Promise<boolean>

normalize

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    const app1 = await Context.data.app1.fetch();
    const app2 = await Context.data.app2.fetch();
    
    app1.data.executors.push(app2.data.executors);
    app1.normalize();
    
    // Далее перебираем элементы нового массива
    app1.data.executors.forEach( ... );
    

    Returns void

setPermissions

  • Метод устанавливает список прав на директорию.

    Метод используется, когда необходимо изменить права на доступ к директории: предоставить или ограничить доступ для пользователя, группы, элемента оргструктуры. Для добавления новых прав доступа используется объект TPermissionValue, а для выдачи прав на определённые операции — PermissionType. После создания нового объекта TPermissions для сохранения новых прав доступа необходимо использовать данный метод.

    
    const searchDir = await System.directories.search().
             where(di => di.__id.eq('<some id>')).
             first();
    
    const user = searchDir.data.__createdBy;
    
    const permissions = new Permissions([
     new PermissionValue(user, [PermissionType.DELETE, PermissionType.READ]),
    ]);
    
    await directory.setPermissions(perms);
    

    Parameters

    • perms: TPermissions

      Новые правила доступа к файлу.

    Returns Promise<void>