• Create initial File model revisions for each uploaded file and populate core metadata (name, MIME type, uploader, timestamps), optionally tagging each revision for audit/traceability.

    Parameters

    • files: UploadedFile[]

      Files received from the client

    • fileTypes: string[]

      Validated MIME types corresponding to each file

    • user: User

      Authenticated user responsible for the upload

    • tags: string[] = []

      Optional tags applied to each created file revision

    Returns Promise<
        (
            InferData<
                {
                    completed: BooleanType<false>;
                    creator: ObjectType<string, false>;
                    description: ObjectType<string, false>;
                    id: StringType<false>;
                    license: StringType<false>;
                    mimeType: StringType<false>;
                    name: StringType<false>;
                    source: ObjectType<string, false>;
                    uploadedBy: StringType<false>;
                    uploadedOn: DateType<false>;
                    userCanDelete: VirtualType<unknown, false>;
                    userIsCreator: VirtualType<unknown, false>;
                },
            > & InferVirtual<
                {
                    completed: BooleanType<false>;
                    creator: ObjectType<string, false>;
                    description: ObjectType<string, false>;
                    id: StringType<false>;
                    license: StringType<false>;
                    mimeType: StringType<false>;
                    name: StringType<false>;
                    source: ObjectType<string, false>;
                    uploadedBy: StringType<false>;
                    uploadedOn: DateType<false>;
                    userCanDelete: VirtualType<unknown, false>;
                    userIsCreator: VirtualType<unknown, false>;
                },
            > & ModelInstanceCore<
                InferData<
                    {
                        completed: BooleanType<false>;
                        creator: ObjectType<string, false>;
                        description: ObjectType<string, false>;
                        id: StringType<false>;
                        license: StringType<false>;
                        mimeType: StringType<false>;
                        name: StringType<false>;
                        source: ObjectType<string, false>;
                        uploadedBy: StringType<false>;
                        uploadedOn: DateType<false>;
                        userCanDelete: VirtualType<unknown, false>;
                        userIsCreator: VirtualType<unknown, false>;
                    },
                >,
                InferVirtual<
                    {
                        completed: BooleanType<false>;
                        creator: ObjectType<string, false>;
                        description: ObjectType<string, false>;
                        id: StringType<false>;
                        license: StringType<false>;
                        mimeType: StringType<false>;
                        name: StringType<false>;
                        source: ObjectType<string, false>;
                        uploadedBy: StringType<false>;
                        uploadedOn: DateType<false>;
                        userCanDelete: VirtualType<unknown, false>;
                        userIsCreator: VirtualType<unknown, false>;
                    },
                >,
            > & RevisionFieldMap & {
                deleteAllRevisions<
                    TThis extends
                        VersionedModelInstance<
                            InferData<
                                {
                                    completed: BooleanType<false>;
                                    creator: ObjectType<string, false>;
                                    description: ObjectType<string, false>;
                                    id: StringType<false>;
                                    license: StringType<false>;
                                    mimeType: StringType<false>;
                                    name: StringType<false>;
                                    source: ObjectType<string, false>;
                                    uploadedBy: StringType<false>;
                                    uploadedOn: DateType<false>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                            InferVirtual<
                                {
                                    completed: BooleanType<false>;
                                    creator: ObjectType<string, false>;
                                    description: ObjectType<string, false>;
                                    id: StringType<false>;
                                    license: StringType<false>;
                                    mimeType: StringType<false>;
                                    name: StringType<false>;
                                    source: ObjectType<string, false>;
                                    uploadedBy: StringType<false>;
                                    uploadedOn: DateType<false>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                        > = VersionedModelInstance<
                        InferData<
                            {
                                completed: BooleanType<false>;
                                creator: ObjectType<string, false>;
                                description: ObjectType<string, false>;
                                id: StringType<false>;
                                license: StringType<false>;
                                mimeType: StringType<false>;
                                name: StringType<false>;
                                source: ObjectType<string, false>;
                                uploadedBy: StringType<false>;
                                uploadedOn: DateType<false>;
                                userCanDelete: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                        InferVirtual<
                            {
                                completed: BooleanType<false>;
                                creator: ObjectType<string, false>;
                                description: ObjectType<string, false>;
                                id: StringType<false>;
                                license: StringType<false>;
                                mimeType: StringType<false>;
                                name: StringType<false>;
                                source: ObjectType<string, false>;
                                uploadedBy: StringType<false>;
                                uploadedOn: DateType<false>;
                                userCanDelete: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                    >,
                >(
                    this: TThis,
                    user?: RevisionActor,
                    options?: RevisionMetadata,
                ): Promise<TThis>;
                newRevision<
                    TThis extends
                        VersionedModelInstance<
                            InferData<
                                {
                                    completed: BooleanType<false>;
                                    creator: ObjectType<string, false>;
                                    description: ObjectType<string, false>;
                                    id: StringType<false>;
                                    license: StringType<false>;
                                    mimeType: StringType<false>;
                                    name: StringType<false>;
                                    source: ObjectType<string, false>;
                                    uploadedBy: StringType<false>;
                                    uploadedOn: DateType<false>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                            InferVirtual<
                                {
                                    completed: BooleanType<false>;
                                    creator: ObjectType<string, false>;
                                    description: ObjectType<string, false>;
                                    id: StringType<false>;
                                    license: StringType<false>;
                                    mimeType: StringType<false>;
                                    name: StringType<false>;
                                    source: ObjectType<string, false>;
                                    uploadedBy: StringType<false>;
                                    uploadedOn: DateType<false>;
                                    userCanDelete: VirtualType<unknown, false>;
                                    userIsCreator: VirtualType<unknown, false>;
                                },
                            >,
                        > = VersionedModelInstance<
                        InferData<
                            {
                                completed: BooleanType<false>;
                                creator: ObjectType<string, false>;
                                description: ObjectType<string, false>;
                                id: StringType<false>;
                                license: StringType<false>;
                                mimeType: StringType<false>;
                                name: StringType<false>;
                                source: ObjectType<string, false>;
                                uploadedBy: StringType<false>;
                                uploadedOn: DateType<false>;
                                userCanDelete: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                        InferVirtual<
                            {
                                completed: BooleanType<false>;
                                creator: ObjectType<string, false>;
                                description: ObjectType<string, false>;
                                id: StringType<false>;
                                license: StringType<false>;
                                mimeType: StringType<false>;
                                name: StringType<false>;
                                source: ObjectType<string, false>;
                                uploadedBy: StringType<false>;
                                uploadedOn: DateType<false>;
                                userCanDelete: VirtualType<unknown, false>;
                                userIsCreator: VirtualType<unknown, false>;
                            },
                        >,
                    >,
                >(
                    this: TThis,
                    user: RevisionActor,
                    options?: RevisionMetadata,
                ): Promise<TThis>;
            } & { populateUserInfo(user: UserAccessContext): void } & FileRelations
        )[],
    >

    Array of File revisions ready to be associated to a Thing