Files
simple-nanoshare/dbschema/default.gel
T

63 lines
1.2 KiB
Plaintext

using future simple_scoping;
module default {
scalar type access_status extending enum<ok, denied, expired, error>;
type IPAddr {
required value: str {
constraint exclusive;
}
}
type UserAgent {
required value: str {
constraint exclusive;
}
}
type files {
required file_id: str {
constraint exclusive;
};
required file_name: str;
required file_size: str;
required note: str;
required content_type: str {
readonly := true;
}
property expires_at: datetime;
required uploaded_at: datetime {
readonly := true;
}
multi accesses -> file_access {
on source delete delete target if orphan;
};
required property user_id: str {
readonly := true;
};
index on ((.file_id, .file_name, .expires_at, .user_id));
}
type file_access {
required link ip -> IPAddr {
readonly := true;
on source delete delete target if orphan;
}
required link user_agent -> UserAgent {
readonly := true;
on source delete delete target if orphan;
}
required status: access_status {
default := access_status.ok;
}
required at: datetime {
readonly := true;
default := datetime_of_statement();
}
}
}