Reynir Björnsson
56737ec71b
Sqlite3 application_id and user_version are now set to identify the database is a builder-web database, and the user_version represents the schema version. The 'build' table is extended with a 'main_binary' column. This represents the main binary artifact from the build. This is decided by there being exactly one file in bin/. A migration tool is written that does both migrations and rollbacks, and migration and rollback is implemented for the above mentioned change.
156 lines
4.5 KiB
OCaml
156 lines
4.5 KiB
OCaml
type id
|
|
|
|
type file = {
|
|
filepath : Fpath.t;
|
|
localpath : Fpath.t;
|
|
sha256 : Cstruct.t;
|
|
}
|
|
val file : file Caqti_type.t
|
|
|
|
val application_id : int32
|
|
|
|
val current_version : int64
|
|
|
|
val get_application_id :
|
|
(unit, int32, [< `Many | `One | `Zero > `One ]) Caqti_request.t
|
|
|
|
val set_application_id :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val get_version :
|
|
(unit, int64, [< `Many | `One | `Zero > `One ]) Caqti_request.t
|
|
|
|
val set_current_version :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val last_insert_rowid :
|
|
(unit, id, [< `Many | `One | `Zero > `One ]) Caqti_request.t
|
|
|
|
module Job : sig
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val get :
|
|
(id, string, [< `Many | `One | `Zero > `One `Zero ])
|
|
Caqti_request.t
|
|
val get_id_by_name :
|
|
(string, id, [< `Many | `One | `Zero > `One ]) Caqti_request.t
|
|
val get_all :
|
|
(unit, id * string, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val try_add :
|
|
(string, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val remove :
|
|
(id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
end
|
|
|
|
module Build_artifact : sig
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val get_by_build :
|
|
(id * Fpath.t, id * file,
|
|
[< `Many | `One | `Zero > `One ]) Caqti_request.t
|
|
|
|
val get_by_build_uuid :
|
|
(Uuidm.t * Fpath.t, id * file,
|
|
[< `Many | `One | `Zero > `One `Zero ])
|
|
Caqti_request.t
|
|
val get_all_by_build :
|
|
(id, id * file, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val add :
|
|
(file * id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val remove_by_build :
|
|
(id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
end
|
|
|
|
module Build_file : sig
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val get_by_build_uuid :
|
|
(Uuidm.t * Fpath.t, Fpath.t * Cstruct.t,
|
|
[< `Many | `One | `Zero > `One `Zero ])
|
|
Caqti_request.t
|
|
val get_all_by_build :
|
|
(id, id * file, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val add :
|
|
(file * id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val remove_by_build :
|
|
(id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
end
|
|
|
|
module Build :
|
|
sig
|
|
type t = {
|
|
uuid : Uuidm.t;
|
|
start : Ptime.t;
|
|
finish : Ptime.t;
|
|
result : Builder.execution_result;
|
|
console : (int * string) list;
|
|
script : string;
|
|
main_binary : Fpath.t option;
|
|
job_id : id;
|
|
}
|
|
module Meta :
|
|
sig
|
|
type t = {
|
|
uuid : Uuidm.t;
|
|
start : Ptime.t;
|
|
finish : Ptime.t;
|
|
result : Builder.execution_result;
|
|
main_binary : Fpath.t option;
|
|
job_id : id;
|
|
}
|
|
end
|
|
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
|
|
val get_opt :
|
|
(id, t, [< `Many | `One | `Zero > `One `Zero ]) Caqti_request.t
|
|
val get_by_uuid :
|
|
(Uuidm.t, id * t, [< `Many | `One | `Zero > `One `Zero ])
|
|
Caqti_request.t
|
|
val get_all :
|
|
(id, id * t, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val get_all_meta :
|
|
(id, id * Meta.t, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val get_all_meta_by_name :
|
|
(string, id * Meta.t, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val add : (t, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
end
|
|
|
|
module User : sig
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val get_user :
|
|
(string, id * Builder_web_auth.user_info,
|
|
[< `Many | `One | `Zero > `One `Zero ])
|
|
Caqti_request.t
|
|
val get_all :
|
|
(unit, string, [ `Many | `One | `Zero ]) Caqti_request.t
|
|
val add :
|
|
(Builder_web_auth.user_info, unit, [< `Many | `One | `Zero > `Zero ])
|
|
Caqti_request.t
|
|
val remove : (id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val remove_user :
|
|
(string, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t
|
|
val update_user :
|
|
(Builder_web_auth.user_info, unit, [< `Many | `One | `Zero > `Zero ])
|
|
Caqti_request.t
|
|
end
|
|
|
|
val migrate :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t list
|
|
val rollback :
|
|
(unit, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t list
|